如何使用locationManager(GPS和NETWORK PROVIDER)只读取一次位置,而不再查找位置更新,以节省电池电量?
Ren*_*eno 29
虽然requestSingleUpdate()技术上是正确答案,但您应该使用
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, mLocationListener);
Run Code Online (Sandbox Code Playgroud)
在获得第一个位置后等待一段时间.该位置倾向于摆动几秒钟.要确定修复是否稳定使用,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...
}
Run Code Online (Sandbox Code Playgroud)
在 'requestSingleUpdate' 中使用 'null' 可以在同一线程上保持更新检查(用于服务)。如果您从活动中运行它,该方法允许您将其放入 Looper。我认为使用异步任务会是更好的方法。
请阅读获取用户位置开发人员指南: http://developer.android.com/guide/topics/location/obtaining-user-location.html
不要忘记在 Android 清单中指定android.permission.ACCESS_FINE_LOCATION
| 归档时间: |
|
| 查看次数: |
36727 次 |
| 最近记录: |