2013-10-07 9 views
0

Я пытаюсь получить текущее местоположение пользователя с помощью LocationListener в FragmentActivity (для поддержки SupportMapFragment), который реализует LocationListener.FragmentActivity и LocationListener

Это мой код: не

private void setLocationManager() { 
     if (lm == null) 
      lm = (LocationManager) this 
        .getSystemService(Context.LOCATION_SERVICE); 

     // exceptions will be thrown if provider is not permitted. 
     try { 
      gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); 
     } catch (Exception ex) { 
     } 
     try { 
      network_enabled = lm 
        .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
     } catch (Exception ex) { 
     } 

     if (gps_enabled) { 
      lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
      Toast.makeText(HomeActivity.this, "Refresh GPS", Toast.LENGTH_SHORT) 
        .show(); 
     } else { 
      lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, 
        this); 
      Toast.makeText(HomeActivity.this, "Refresh NET", Toast.LENGTH_SHORT) 
        .show(); 
     } 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     MyCurrentLocation = location; 
     Toast.makeText(
       HomeActivity.this, 
       "Refresh == my lat : " + MyCurrentLocation.getLatitude() 
         + " my long : " + MyCurrentLocation.getLongitude(), 
       Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     Toast.makeText(HomeActivity.this, provider, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     Toast.makeText(HomeActivity.this, provider, Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    } 

У меня проблемы есть:

  • переопределенный метод: onLocationChanged никогда не вызывается с помощью сетевого провайдера
  • переопределенного метод: onProviderDisabled не вызывается каждый раз ..

И никогда не использую: lm.remove Обновление метода

+0

Рассматривали ли вы новые функции в Службе воспроизведения. Из этого можно извлечь текущее местоположение. https://developer.android.com/training/location/retrieve-current.html – Kuffs

+0

Сетевой провайдер, не вызывающий onLocationChanged, является известной проблемой, которая появилась при выпуске плавного провайдера. Проверьте https://code.google.com/p/android/issues/detail?id=57707 и https://code.google.com/p/android/issues/detail?id=55896. Забавно, что приложение карт (которое, вероятно, использует плавный провайдер) получает обновления от Network Provider просто отлично. На данный момент я настоятельно рекомендую использовать платный провайдер. – linakis

+0

+1 Бороро! Перезагрузка сделала трюки на моем Samsung Galaxy S3, Android скучно .. – eento

ответ

0

перезагрузка моего Samsung Galaxy S3 сделала работу ..

Надеется, что это помогает.

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