开发者

Android LocationManager.getLastKnownLocation() returns null

开发者 https://www.devze.com 2022-12-09 08:38 出处:网络
So I\'m trying to sample the gps coordinates just once in an application.I don\'t want to create a LocationListener object to constantly get gps updates.I want to wait until receiving the coordinates,

So I'm trying to sample the gps coordinates just once in an application. I don't want to create a LocationListener object to constantly get gps updates. I want to wait until receiving the coordinates, and then proceed on to another task.

Here is a code snippet

LocationManager lm = (L开发者_如何学GoocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);

The loc variable is always null in the emulator. I tried using the command "geo fix latitude longitude" to set it, and also I tried using the DDMS way of setting it. Neither method had any effect on the code. Also the snippet isn't causing any exceptions.

Thanks for your help.


The call to request update for a location is not blocking, hence it wont wait there. Also the provider in emulator may not have been started.

A possible check could be to see if the settings in it disable gps provider ? then send geo fix.

However, I would use Location Listener, it would be ideal in your case since you need a geo fix to proceed further.Location Listener is Used for receiving notifications from the LocationManager when the location has changed. You can unregister the listener after first geofix.

Note: It can take some time on device to get current location, and even on device this can return null.


Try using the MyLocationOverlay , create a runnable that does what you need to do with that GPS location, and pass it to

boolean     runOnFirstFix(java.lang.Runnable runnable)
          Queues a runnable to be executed as soon as we have a location fix.

and then disable the location updates for the MyLocationOverlay.

Edit: The reason the location is null is because at the time that code is run, no geofix has been received.

0

精彩评论

暂无评论...
验证码 换一张
取 消