2014-04-03 2 views
0

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

Попробуйте перезагрузить устройство и убедитесь, что местоположение включено в настройках. Если все в порядке, я бы рекомендовал использовать LocationClient для получения текущего местоположения. – Libin

+0

Также проверьте эту ссылку http://stackoverflow.com/questions/6854099/getlastknownlocation-method-always-returns-null?rq=1 – Libin

+0

Спасибо за совет Либин, он фактически работал только сейчас, но через час или около того обновления .., который заставил поток убить батарею моего телефона. Я буду искать locationClient и его использование в будущем. – user1405097

ответ

0

Он не перестает работать на самом деле, это было просто, отнимающих много времени, чтобы получать координаты .. Я буду искать другое решение, чтобы сэкономить время и аккумулятор телефона; начиная с изменения всей функции до установления приличного тайм-аута в конце цикла.

Смежные вопросы