如何读取位置只有一次与locationManager (GPS和网络提供程序),而不是寻找位置的更新



如何读取位置只有一次与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。更多信息,官方指南很有趣:信息

相关内容

最新更新