2015-08-13 6 views
0

Есть ли какая-либо модель для определения дренажа батареи в android из-за gps? Я на самом деле пытаюсь найти оптимальный компромисс между точностью и потреблением батареи из-за gps и мобильных сетей для доступа к местоположению.Сравнение местоположения Android между точностью и потреблением батареи

ответ

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); 
    } 
} 
+0

Что делать, если я устанавливаю fineAccuracy как true, а моя мощность средняя или низкая, то будет ли она использовать мою gps или сотовую сеть? –

+0

Если честно, я не уверен. Я просто использую COARSE и MEDIUM, когда устройство находится на пути к чему-либо, и FINE + HIGH, когда в пункте назначения. – matty357

+0

Спасибо, матушка !!! –

1

Location and Battery Drain видео с Android Performance Patterns может пролить больше информации о вашей проблеме.

Основная проблема сводится к поиску баланса между разрешением местоположения и частотой обновления местоположения.

Если вы отметите «setInterval» при слишком высокой скорости, вы будете постоянно стучать по микросхеме GPS, чтобы захватить местоположение и, таким образом, тратить батарею на каждый пинг. Хуже того, по-прежнему появляются пинги, когда они вам не нужны (например, когда приложение находится в фоновом режиме). Устанавливая его слишком низко, конечно, вы не будете быстро обновлять приложение. Идеальный сценарий состоит в том, чтобы отрегулировать интервал, основанный на потребности, и использовать только то, что вам нужно.

На стороне разрешения это все об использовании минимального разрешения для ваших нужд. NetworkLocation использует меньше батареи, чем точное местоположение GPS, поэтому переключение между двумя по требованию может помочь сэкономить аккумулятор и по-прежнему обеспечить пользователю полезность.

+1

Большое спасибо за видео. Видео помогли мне получить представление. –