I’ve got a serious problem with my GPS on my Nexus One: I wrote a kind of hello world with GPS, but the Toast that should be displayed isn’t 🙁
I don’t know what I’m doing wrong…maybe you could help me getting this work. Here’s my code:
package gps.test;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class GPS extends Activity {
private LocationManager lm;
private LocationListener locationListener;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ---use the LocationManager class to obtain GPS locations---
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 1,
locationListener);
}
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
Toast.makeText(
getBaseContext(),
"Location changed : Lat: " + loc.getLatitude()
+ " Lng: " + loc.getLongitude(),
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
}
Theoretically there should be a new toast every 100 milliseconds, shouldn’t it? Or at least, when I change my position by one meter!?
I’ve no idea why it doesn’t. I must admit I’m new to the topic, maybe I’ve missed something?
It would be great if you could give me a hint 🙂
nice greetings,
poeschlorn
The code looks correct to me. Do note that:
This means that you will have to move the phone by more than a meter to get location updates and the check is done approximately every 0.1 second.
I would suggest you add logging statements in these functions:
This is so that you know what flow your code is taking. GPS could be disabled for e.g. and you’ll not know within your app.
And finally, do remember to remove listening to locations in onPause (or when required). Having an app in the background that is continuously getting location updates when not required is a huge drain to the battery.