I am trying to create an application that just displays the co-ordinates on the screen. Following permissions are added in the manifest file.
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
The following is the code in MainActivity.java
import com.example.location.R;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.provider.Settings;
public class MainActivity extends Activity {
double latitude;
double longitude;
TextView lat, longi, loc, status;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lat = (TextView)findViewById(R.id.latitude);
longi = (TextView)findViewById(R.id.longitude);
status = (TextView)findViewById(R.id.status);
loc = (TextView)findViewById(R.id.location);
ContentResolver contentResolver = getBaseContext().getContentResolver();
boolean gpsStatus = Settings.Secure.isLocationProviderEnabled(contentResolver, LocationManager.GPS_PROVIDER);
if(gpsStatus){
status.setText("GPS_PROVIDER is enabled.");
// This is to check if GPS_PROVIDER is enabled or not.
// This is working.
}
}
@Override
protected void onResume(){
super.onResume();
loc.setText("Entered Resume method"); //This works as well.
final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
latitude = location.getLatitude();
longitude = location.getLongitude();
String str_lat = String.valueOf(latitude);
String str_longi = String.valueOf(longitude);
lat.setText(str_lat);
longi.setText(str_longi);
loc.setText((CharSequence) location);
}
@Override
public void onStatusChanged(String provider, int status,Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
};
final LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//Location Location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//double altitude = Location.getAltitude();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
}
}
The app doesnot settext for the latitude and the longitude texts, When running in the emulator, I donot see any errors. I am not even getting the latitude and longitude as 0.0, 0.0.
While running the app in the phone, after few seconds, the app closes with dialogbox "Unfortunately, App has stopped"
Following is the error messages in the logCat.
11-04 23:35:48.250: E/AndroidRuntime(1224): FATAL EXCEPTION: main
11-04 23:35:48.250: E/AndroidRuntime(1224): Process: com.example.location, PID: 1224
11-04 23:35:48.250: E/AndroidRuntime(1224): java.lang.ClassCastException: android.location.Location cannot be cast to java.lang.CharSequence
11-04 23:35:48.250: E/AndroidRuntime(1224): at com.example.location.MainActivity$1.onLocationChanged(MainActivity.java:65)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.os.Handler.dispatchMessage(Handler.java:102)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.os.Looper.loop(Looper.java:136)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.app.ActivityThread.main(ActivityThread.java:5017)
11-04 23:35:48.250: E/AndroidRuntime(1224): at java.lang.reflect.Method.invokeNative(Native Method)
11-04 23:35:48.250: E/AndroidRuntime(1224): at java.lang.reflect.Method.invoke(Method.java:515)
11-04 23:35:48.250: E/AndroidRuntime(1224): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
11-04 23:35:48.250: E/AndroidRuntime(1224): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
11-04 23:35:48.250: E/AndroidRuntime(1224): at dalvik.system.NativeStart.main(Native Method)
I am new into android programming, so kindle correct me if I am doing any silly mistakes and help me learn. Any help debugging this is greatly appreciated.