Skip to content
Advertisement

android getlastknownlocation always null in emulator

It seems a common issue, but i really can’t understand why is it happening even though i read ton of simialr issues.

I am playing with a basic location class on a emulator device, i set everything – permissions (FINE and COARSE) , i have set the coordinates in the DDMS i also tried using the telnet and then <geo fix …> , but no matter what it always crashes witth nullpointer exception on the line with getlastknownlocation, any ideas whats wrong here ?

public class MainActivity extends Activity implements LocationListener {
private static LocationManager ok;
private Location L;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ok=(LocationManager)this.getSystemService(ok.GPS_PROVIDER);
    L=ok.getLastKnownLocation(ok.GPS_PROVIDER);
}

@Override
public void onLocationChanged(Location Loc) {
    try {
        double latop=Loc.getLatitude();
        double longe=Loc.getLongitude();
        
        Log.i("OK", "and"+longe+""+latop);
    } catch (NullPointerException e) {
    }
}

Advertisement

Answer

getLastKnownLocation() will return null in general, if no app has requested a location fix from your desired provider recently.

On the emulator, it seems to take it one step further: you do not get a location unless one has been delivered to the emulator since your app has called requestLocationUpdates().

The general pattern for using getLastKnownLocation(), if you want decent odds of getting an actual Location, is to use requestLocationUpdates() and removeLocationUpdates() to ensure that LocationManager is actively seeking locations via your chosen provider. Of course, you could also use LocationListener and onLocationChanged(), rather than getLastKnownLocation(), if you so chose.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement