2013-06-26 3 views
0

мой ниже код работает на всех устройствах, кроме android 4.1 и android 4.2 версий. я уже пробовал много вещей, и искали около that..in Самсунга форума, он также сказал, он не работает видеть эту LinkonLocationChanged не вызывается После того, как JellyBean продолжает версию

mLocationManager.requestLocationUpdates(
       LocationManager.NETWORK_PROVIDER,1000, 100, this); 




public void onLocationChanged(Location newBestLocation) { 

     System.out.println("On Location Change Call......."); 
     mLocationManager.removeUpdates(this); 
     boolean best = isBetterLocation(newBestLocation, currentLocation); 
     if (best) { 
      currentLocation = newBestLocation; 
     } 
     locationUpdater.onLocationUpdateReceived(currentLocation); 
    } 

если кто-нибудь знает решение этой проблемы, пожалуйста, дайте мне знать об этом.

+0

«не работает» является бесполезное описание ваших симптомов. – CommonsWare

+0

@CommonsWare я редактировал вопрос. – Riser

ответ

0

Поведение LocationManager для частоты обновления местоположения в связи с параметрами minTime и minDistance, измененными в Android 4.1.

От http://developer.android.com/reference/android/location/LocationManager.html:

До Jellybean, параметр minTime был лишь намек, и некоторые реализации провайдеров местонахождения проигнорировала. Начиная с Jellybean и далее для Android-совместимых устройств обязательно соблюдать параметры minTime и minDistance.

Я подозреваю, что ваш minDistance = 100 может быть причиной отсутствия обновлений на 4.1 и выше, когда Android запускает обновления на 4.0 и ниже (потенциально неправильно). Попробуйте изменить оба значения = 0 и посмотрим, что произойдет - вы должны увидеть обновления довольно часто:

mLocationManager.requestLocationUpdates(
      LocationManager.NETWORK_PROVIDER, 0, 0, this); 

Вы должны будете играть с этими параметрами, пока вы не получите то, что соответствует вашим требованиям приложения для местоположения частоты обновления, сохраняя время автономной работы и поддерживая постоянное поведение на всех версиях Android, которые вы хотите поддержать.

Учитывая вышеуказанные ограничения, вы можете рассмотреть вопрос о переходе на новый Fused Место поставки: http://developer.android.com/training/location/receive-location-updates.html

... и более конкретно, приоритет PRIORITY_BALANCED_POWER_ACCURACY: http://developer.android.com/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_BALANCED_POWER_ACCURACY