如何读取位置只有一次与locationManager (GPS和网络提供商),而不是寻找位置的更新,以节省电池?
虽然requestSingleUpdate()
是技术上正确的答案,但您应该使用
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, mLocationListener);
在获得第一个位置后等待一段时间。这个位置往往会摇晃几秒钟。要确定修复是否稳定,请使用location.getAccuracy()
。一旦精度稳定,调用locationManager.removeUpdates(mLocationListener);
public LocationManager locationManager;
try {
locationManager.requestSingleUpdate( LocationManager.GPS_PROVIDER, new MyLocationListenerGPS(), null );
} catch ( SecurityException e ) { e.printStackTrace(); }
public class MyLocationListenerGPS implements LocationListener {
@Override
public void onLocationChanged(Location location) {
// your code and required methods go here...
}
在'requestSingleUpdate'中使用'null'使更新检查在同一线程上(用于服务)。如果你从activity中运行它,这个方法允许你把它放在loop中。我认为使用异步任务是更好的方法。
直接从位置管理器中删除updated。
locationManager.removeUpdates(this);
请阅读获取用户位置开发人员指南:http://developer.android.com/guide/topics/location/obtaining-user-location.html
最佳性能链接
不要忘记指定android.permission。Android manifest中的ACCESS_FINE_LOCATION
要获得位置,您可以参考此链接并搜索 requestSingleUpdate
只需一次读取位置更新,如
locationManager。
并在读取一次位置后调用
locationManager.removeUpdates(这);
所以系统不会要求位置更新之后,你可以节省你的电池。
使用requestSingleUpdate
与您的LocationManager
。更多信息,官方指南很有趣:信息