我正在一个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/

10-10 20:27