我正在一个android项目上工作,我必须每2分钟获取用户的当前位置,而我们使用的代码是
try {
DpGPSEnabled = DpLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
DpNetworkEnabled = DpLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (DpIsGpsProvider && DpGPSEnabled) {
DpLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,DpMIN_TIME_BW_UPDATES,DpMIN_DISTANCE_CHANGE_FOR_UPDATES,DpLocationListener);
} else if (!DpGPSEnabled) {
DpLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,DpMIN_TIME_BW_UPDATES,DpMIN_DISTANCE_CHANGE_FOR_UPDATES,DpLocationListener);
DpGenUtil.setLocationPostion(DpLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER));
}
if (DpGPSEnabled && DpNetworkEnabled) {
DgProvider = "GPS+Network";
} else if (DpNetworkEnabled) {
DgProvider = "Network";
} else if (DpGPSEnabled) {
DgProvider = "GPS";
} else {
DgProvider = "Not Selected";
}
} catch (Exception ex) {
}
其中DpMIN_TIME_BW_UPDATES = 1000 * 60 * 2; 2分钟
并且DpMIN_DISTANCE_CHANGE_FOR_UPDATES = 200;以米为单位
问题是我们能够正确找到位置,但是电池开始消耗更快,是否还有其他方法可以获取位置并且它也不会消耗太多电池。
最佳答案
Gps比wifi消耗更多的电池。您可以将request location updates与LocationManager结合使用,或者如果没有Google Play服务也可以使用FusedLocationProvider api。 FLP使用Wifi,Gps和Kalman滤波器来提高定位精度。您可以同时测试LocationManager和FLP的准确性和电池消耗。我在LocationManager Gps和FLP上在户外都能获得4m的精度(更好的设备可能会获得更好的结果)。 LocationManager wifi的准确性较低,并且没有速度,高度信息。
关于android - 获取GPS位置会消耗电池,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46805058/