getLastKnownLocation теперь возвращает null, но он полностью работал день назад! теперь он постоянно в нуле, с разных телефонов.getLastKnownLocation() возвращает null; он работал день назад
В чем проблема? я реализовал это неправильно? Поток locationFetch работает постоянно - с циклом while, реализованным внутри, и отвечает за вызов функции onLocationChanged с каждым изменением.
Runnable locationFetchRun = new Runnable()
{
public void run()
{
tracker = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
Location location;
boolean enabled;
// Initialize the location fields
while(!isFinishing())
{
Log.i("Homepage","User id value "+user_id);
tracker = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
enabled = tracker
.isProviderEnabled(LocationManager.GPS_PROVIDER);
connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
//Brick point
if(!enabled || activeNetworkInfo.isConnected()!= true)
{
continue;
}
provider = tracker.getBestProvider(criteria, true);
location = tracker.getLastKnownLocation(provider);
if (location != null)
{
gps_state = 1;
onLocationChanged(location);
}
else
gps_state = 0;
}
}
};
//Start location fetch thread
Thread locationFetch = new Thread(locationFetchRun);
locationFetch.start();
Попробуйте перезагрузить устройство и убедитесь, что местоположение включено в настройках. Если все в порядке, я бы рекомендовал использовать LocationClient для получения текущего местоположения. – Libin
Также проверьте эту ссылку http://stackoverflow.com/questions/6854099/getlastknownlocation-method-always-returns-null?rq=1 – Libin
Спасибо за совет Либин, он фактически работал только сейчас, но через час или около того обновления .., который заставил поток убить батарею моего телефона. Я буду искать locationClient и его использование в будущем. – user1405097