我正在开发一个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;以米为单位
问题是我们能够正确地获得位置,但电池开始消耗得更快,是否有任何其他方法我们可以获得位置,它也不会消耗太多电池。
答案 0 :(得分:1)
Gps比wifi消耗更多电池。您可以request location updates使用Criteria与LocationManager,或者如果没有Google Play服务不是问题,您可以使用FusedLocationProvider api。 FLP使用Wifi,Gps和卡尔曼滤波器来定位精度。您可以测试LocationManager和FLP的准确性和电池消耗。通过LocationManager Gps和FLP,我可以在室外获得高达4米的精度(更好的设备可以获得更好的结果)。 LocationManager wifi具有较低的准确性,并且没有速度,高度信息。