Android位置在准确性和电池消耗之间进行权衡

时间:2015-08-13 12:21:13

标签: android gps location wifi battery

是否有任何型号可以确定因GPS而导致的电池排水?实际上,我正试图在gps和移动网络之间找到准确性和电池消耗之间的最佳权衡,以便进行位置访问。

2 个答案:

答案 0 :(得分:2)

我不知道如何确定排水,我只能为改变功耗和精度而自豪,希望这有点帮助。

public static void changeProviderCriteria(boolean fineAccuracy, String power){
    Criteria crit = new Criteria();

    if(fineAccuracy){
        crit.setAccuracy(Criteria.ACCURACY_FINE);
    }else{
        crit.setAccuracy(Criteria.ACCURACY_COARSE);
    }

    if(power.equalsIgnoreCase("high")){
        crit.setPowerRequirement(Criteria.POWER_HIGH);
    }else if(power.equalsIgnoreCase("medium")){
        crit.setPowerRequirement(Criteria.POWER_MEDIUM);
    }else if(power.equalsIgnoreCase("low")){
        crit.setPowerRequirement(Criteria.POWER_LOW);
    }
    String provider="";
    if(locationManager==null){

    }else{
        provider = locationManager.getBestProvider(crit, true);
    }

    if(provider==null){

    }else{
        locationManager.requestLocationUpdates(provider, currentRefreshTime, currentRefreshDist, locationListener);
    }
}

答案 1 :(得分:1)

来自Location and Battery DrainAndroid Performance Patterns视频可能会为您的问题提供更多信息。

基本问题归结为在位置分辨率和位置更新频率之间找到平衡。

如果您将“setInterval”标记为过高的速率,那么您将不断敲击GPS芯片以获取位置,从而为每次ping操作浪费电池。更糟糕的是,当你不需要它们时(例如当应用程序在后台时)仍然会获得ping操作。将它设置得太低,当然然后不能足够快地更新你的应用程序。理想的情况是根据需要调整间隔,并仅使用您需要的内容。

在解决方面,所有关于根据需要使用最低分辨率。 NetworkLocation使用的电池数量少于精细GPS位置,因此按需切换可以帮助节省电池并为用户提供实用性。