是否有任何型号可以确定因GPS而导致的电池排水?实际上,我正试图在gps和移动网络之间找到准确性和电池消耗之间的最佳权衡,以便进行位置访问。
答案 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 Drain的Android Performance Patterns视频可能会为您的问题提供更多信息。
基本问题归结为在位置分辨率和位置更新频率之间找到平衡。
如果您将“setInterval”标记为过高的速率,那么您将不断敲击GPS芯片以获取位置,从而为每次ping操作浪费电池。更糟糕的是,当你不需要它们时(例如当应用程序在后台时)仍然会获得ping操作。将它设置得太低,当然然后不能足够快地更新你的应用程序。理想的情况是根据需要调整间隔,并仅使用您需要的内容。
在解决方面,所有关于根据需要使用最低分辨率。 NetworkLocation使用的电池数量少于精细GPS位置,因此按需切换可以帮助节省电池并为用户提供实用性。