2013-05-11 22 views
28

Şerefe, Android üzerinden mevcut GPS-Konumunu almaya çalışıyorum. this Tutorial ve Vogellas article numaralı telefonu takip ettim. Yine de çalışmıyor. LocationManager.NETWORK_PROVIDER kullanırken, nerede olduğum önemli değil, her zaman 51 ve boylam 9'un enlemini elde ediyorum. LocationManager.GPS_PROVIDER kullanırken, hiçbir şey elde edemiyorum.Android GPS konumu nasıl edinilir

Her şey GMaps kullanırken işe yarıyor olsa da: S Neden olduğu hakkında bir fikriniz yok. GMaps gibi mevcut GPS Konumunu nasıl alabilirim? temsil ettikleri çünkü

int latitude = (int) (location.getLatitude()); 
int longitude = (int) (location.getLongitude()); 

Enlem ve Boylam double-değerleri şunlardır:

İşte
public LatLng getLocation() 
    { 
    // Get the location manager 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    String bestProvider = locationManager.getBestProvider(criteria, false); 
    Location location = locationManager.getLastKnownLocation(bestProvider); 
    Double lat,lon; 
    try { 
     lat = location.getLatitude(); 
     lon = location.getLongitude(); 
     return new LatLng(lat, lon); 
    } 
    catch (NullPointerException e){ 
     e.printStackTrace(); 
     return null; 
    } 
    } 
+2

, bu kütüphaneyi kullanabilir/Android-SimpleLocation – caw

+0

http: // stackoverflow dosyasını kontrol edin.com/questions/1513485/how-do-i-get-the-current-gps-konum-program-android-içinde-android/38897436 # 38897436 –

cevap

25

senin sorunun:

package com.example.gpslocation; 

import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.util.Log; 
import android.view.Menu; 

public class GPS_Location extends Activity implements LocationListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gps__location); 

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.gps__location, menu); 
    return true; 
} 

@Override 
public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 

    int latitude = (int) (location.getLatitude()); 
    int longitude = (int) (location.getLongitude()); 

    Log.i("Geo_Location", "Latitude: " + latitude + ", Longitude: " + longitude); 
} 

@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 

} 

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

} 

} 
+1

Zaten bir şey aptalca olacağını düşündüm. Bunu kanıtladınız: P Ty – JustBasti

+0

@JustBasti bunu cevap olarak işaretlemelisiniz. –

+0

yeh sadece unutuldu: P thx – JustBasti

20

Bir deneyin: İşte

kod bu derece cinsinden yer.

Onları int'a göndererek, virgülün arkasındaki her şeyi atıyorsunuz, bu da büyük bir fark yaratıyor.

int latitude = (int) (location.getLatitude()); 
int longitude = (int) (location.getLongitude()); 

Sen ilk konu ikiye lat ve lon değiştirerek çözüldü int

double latitude = location.getLatitude(); 
double longitude = location.getLongitude(); 
+4

Cevabınız için teşekkürler, ben zaten yukarıda kodunuzu denedim ve sadece kendi kodumu kesilmiş olsa da Sorunu size göstermek için en basit çözüm için P Thanks zaten – JustBasti

12

Bu kod bir sorun var bakın.

Location location = locationManager.getLastKnownLocation(bestProvider); ile çözüme yorum eklemek istiyorum Diğer uygulama bu için lisnerning olduğunda, bilinen son konumu bulmak için çalışır. Örneğin, hiç bir uygulama, cihaz başladığından bu yana hiç bir uygulama yapmadıysa, kod sıfırlar (geçenlerde kendimi biraz zaman geçirdim) döndürecektir.

Ayrıca, manifest bile izinlerine sahip, locationManager.removeUpdates(this); Ayrıca

tarafından buna gerek olduğunda dinlemeyi durdurmak için iyi bir uygulama konum hizmeti bir cihazda Android ayarlarından etkinleştirildiğinde kod çalışır bu.

0

alıntı: - Yukarıda görebileceğiniz gibi

try 
     { 
      cnt++;scnt++;now=System.currentTimeMillis();r=rand.nextInt(6);r++; 
      loc=lm.getLastKnownLocation(best); 
      if(loc!=null){lat=loc.getLatitude();lng=loc.getLongitude();} 

      Thread.sleep(100); 
      handler.sendMessage(handler.obtainMessage()); 
     } 
     catch (InterruptedException e) 
     { 
      Toast.makeText(this, "Error="+e.toString(), Toast.LENGTH_LONG).show(); 
     } 

, bir iplik sürekli olarak uzun şimdiki zaman ve rastgele zar atmak Alongwith GPS lat görüntüler kullanıcı arayüzü aktivitesinin ana iş parçacığı yanında yayınlanmaktadır.

sonra sadece tam kodunu kontrol meraklı İSE: https://github.com/delight-im: GPS konum almak için daha yüksek düzeyde ve daha kolay yolu için GPS Location with a randomized dice throw & current time in separate thread

İlgili konular