2012-06-16 5 views
3

Я использую Android и Google Maps на уровне API 10, и я получаю широту и долготу по telnet.Какие альтернативы для onLocationChanged()?

public void onLocationChanged(Location location) { 
    lat = location.getLatitude(); 
    lng = location.getLongitude(); 
    //... 
} 

Но пользователь должен двигаться первым. Есть ли другое решение?

ответ

1

Альтернатива onLocationChanged (Location location) использует диспетчер местоположения и широковещательный приемник для получения информации о местоположении пользователя. Обратитесь к документации, чтобы прочитать все о Location Manager class. С классом менеджера местоположений вы сможете установить интервал, в течение которого вы хотите исследовать местоположение пользователя, даже если они не были перемещены. Вы будете иметь:

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 

Intent intent = new Intent(context, LocationReceiver.class); 
      pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

      List<String> knownProviders = locationManager.getAllProviders(); 

      if(locationManager != null && pendingIntent != null && knownProviders.contains(LocationManager.GPS_PROVIDER)){ 
       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINUTE_INTERVAL*5, 0, pendingIntent); 
      } 

      if(locationManager != null && pendingIntent != null && knownProviders.contains(LocationManager.NETWORK_PROVIDER)){ 
       locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MINUTE_INTERVAL*5, 0, pendingIntent); 
      } 

В классе LocationReceiver (Broadcast Receiver) вы будете иметь метод в onRecieve(), в котором вы можете использовать:

public void onReceive(Context context, Intent intent) { 
     Bundle bundle = intent.getExtras(); 
     location = (Location) bundle.get(LocationManager.KEY_LOCATION_CHANGED); 

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

+0

Спасибо, Донни, это помогло мне :) –

+0

Рад, что это помогло :) – Donnie

+0

Если это решило вашу проблему, тогда вы должны пометить ответ как принятый. Символ галочки слева под подсчет голосов. – Donnie