2016-07-28 2 views
0

Я разработал приложение для Android, которое проверяет обновления местоположения и отправляет данные о местоположении на сервер через определенное время. Я тестировал оба метода; один из которых использует местоположение Google api, а другой - службу Android. Но оба приложения потребляют слишком много батареи. Мне нужно оптимизировать использование батареи, чтобы пользователи могли использовать приложение столько, сколько им нужно.Приложение на основе службы местоположения в android

Есть несколько приложений, которые отслеживают наше местоположение все время и никогда не мешают батарее; например, endomondo, Facebook и т. д. Специально я хочу упомянуть endomondo, потому что он действительно отлично работает во время работы.

Может ли кто-нибудь предложить мне лучший способ реализовать определение местоположения для Android-приложения?

Как я могу сделать свое приложение похожим на приложение endomondo или подобное приложение с поддержкой местоположения?

Просьба предложить мне лучший способ сделать это.

Заранее спасибо.

ответ

0

Вы пытались уменьшить отслеживание местоположения GPS чеком, если LocationManagar имеет Место, что достаточно хорошо для вас (может быть другое отслеживание приложений?)

Ex:

private static Location bestLastKnownLocation(float minAccuracy, long maxAge, LocationManager mLocationManager) { 

    Location bestResult = null; 
    float bestAccuracy = Float.MAX_VALUE; 
    long bestAge = Long.MIN_VALUE; 

    List<String> matchingProviders = mLocationManager.getAllProviders(); 

    for (String provider : matchingProviders) { 

     Location location = mLocationManager.getLastKnownLocation(provider); 

     if (location != null) { 

      float accuracy = location.getAccuracy(); 
      long time = location.getTime(); 

      if (accuracy < bestAccuracy) { 

       bestResult = location; 
       bestAccuracy = accuracy; 
       bestAge = time; 

      } 
     } 
    } 

    // Return best reading or null 
    if (bestAccuracy > minAccuracy || (System.currentTimeMillis() - bestAge) > maxAge) { 
     return null; 
    } else { 
     return bestResult; 
    } 
} 
Смежные вопросы