2016-04-08 24 views
-1

Geçerli konumumu GPS olmadan almak için aşağıdaki kodu kullanıyorum, ancak koordinatları bir tostta göstermek istiyorum. Bu kodu denedim, ancak koordinatlar yerine paket ismimi gösteriyor!Android'de geçerli konum nasıl alınır?

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

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

    // Define a listener that responds to location updates 

    LocationListener locationListener = new LocationListener() { 
     public void onLocationChanged(Location location) { 
      // Called when a new location is found by the network location provider. 
      //makeUseOfNewLocation(location); 
     } 

    public void onStatusChanged(String provider, int status, Bundle extras) {} 

    public void onProviderEnabled(String provider) {} 

    public void onProviderDisabled(String provider) {} 

    }; 

    // Register the listener with the Location Manager to receive location updates 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
    Toast.makeText(getBaseContext(), "location is:"+locationListener, Toast.LENGTH_LONG).show(); 
} 
+0

Yaz Tost(). Yer. GetLat/LNG(). – VVB

+0

bunu kontrol edin, gerçekten harika bir şeydir https://github.com/meetmehdi/GetAccurateLocation –

cevap

1

Sadece konumunuzu onLocationChanged() geri aramada bulabilirsiniz.

// Acquire a reference to the system Location Manager 
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 

// Define a listener that responds to location updates 
LocationListener locationListener = new LocationListener() { 

    public void onLocationChanged(Location location) { 

     // Called when a new location is found by the network location provider. 
     Toast.makeText(getBaseContext(), "location is:"+location, Toast.LENGTH_LONG).show(); 
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) {} 

    public void onProviderEnabled(String provider) {} 

    public void onProviderDisabled(String provider) {} 
}; 

// Register the listener with the Location Manager to receive location updates 
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
+0

Bunun yerine en son bilinen yeri almak için hangi çizgiyi değiştirmeliyim? – abbie

+0

Bu farklı bir soru. Bir cevabı kabul edin ve yeni bir tane oluşturun. –

+0

http://stackoverflow.com/questions/36512349/how-do-i-get-my-last-known-location-in-android burada – abbie

0

LocationListener nesnesini ekmeye çalışıyorsunuz. Kızartma sırasında nesne ve tost location.getLatitude() ve location.getLongitude() yöntemi.

+0

manifest alanına izin eklediniz mi? –

+0

evet, zaten sahibim. – abbie

0

Geçerli kodunuz, LocationListener kaydedildiğinde bir tost yapar ve dinleyicinin yalnızca sınıf adını döndüren Object.toString() öğesini çağırır.

Belki onLocationChanged işlevi içinde için ... çizgiyi Toast.makeText (taşımak ve "location is:"+location metni değiştirebilir veya istediğiniz "location is: "+location.getLatitude()+","+location.getLongitude().

Ayrıca, bu kod tost her zaman yapmaya devam edecektir diye yeni bir konum alır. o etkinlik bittiğinde durur, böylece sadece tek bir tost yapmak LocationManager.requestSingleUpdate kullanın veya OnDestroy bir LocationManager.removeUpdates koymak ya isteyebilirsiniz.

+0

Bunun yerine en son bilinen yeri almak için hangi çizgiyi değiştirmem gerektiğini söyleyebilir misiniz? – abbie

+0

requestLocationUpdates bir. Sağlayıcıların bir listesini [getProviders] ile alın (http://developer.android.com/reference/android/location/LocationManager.html#getProviders (boolean)) işlevlerinden sonra [LocationManager.getLastKnownLocation (String)] olarak adlandırın. (http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String)). Yaşı ya da doğruluğu karşılaştırarak, kendinizin seçeceği mantığı yazmanız gerekecektir. Yapmak istediğin buysa LocationListener'a ihtiyacınız yok. –

0

ilk FMLocationListener sınıf oluşturmak.

private static class FMLocationListener implements LocationListener { 

       public void onLocationChanged(Location location) { 

       } 

       public void onProviderDisabled(String provider) { 

       } 

      public void onProviderEnabled(String provider) { 

      } 

      public void onStatusChanged(String provider, int status, Bundle extras) { 

      } 

     } 

daha sonra aşağıdaki kodu kullanın

+0

LocationManager konumuManager = (LocationManager) davranışı \t \t \t \t .getSystemService (İçerik.KONUM SERVİSİ); FMLocationListener listenerNetwork = new FMLocationListener(); locationManager.requestLocationUpdates ( \t \t \t \t \t LocationManager.NETWORK_PROVIDER, 0, 0, listenerNetwork); Konum ağıLocation = getLocationByProvider ( \t \t \t \t LocationManager.NETWORK_PROVIDER, locationManager); NetworkLocation .getLatityde() ve getLongitude() –

+0

kullanarak // toast yerine son bilinen yeri almak için hangi satırı değiştirmeliyim? – abbie

0

Bu size yardımcı olacaktır. onLocationChanged yöntemde

How to get current location in Android

koyun tost hattı. konum tabanlı GPS için tek ağ tabanlı konum kullanımını bu bir

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

kullanmak için , onLocationChanged içindeki bu bir

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
İlgili konular