2010-08-06 24 views
5

Android'de, yolda çalışanlar için bir saatli kart görevi görecek bir uygulama oluşturmak üzereyim.Mevcut GPS konumunu nasıl edinebilirim?

Bir işin başlangıcında kullanıcı, GPS konumunu ve geçerli saatini (böylece belirli bir zamanda olması gereken yerde olduğunu doğrulayan) kaydedecek bir düğmeye tıklar ve tekrar kayıt yaptığı işin sonunda zaman ve GPS konumu.

Sanırım mevcut konum verilerini çekmenin bir yolunu bulamadığım için yeterince kolay olacak. Bulabildiğim en yakın, sabit bir GPS okuması yapamadığımı gösteren onLocationChanged. Bunu yapmanın mümkün olduğunu biliyorum, ancak nasıl başarılacağına dair bir çalışma örneği bulamıyor.

cevap

3

biraz araştırma sonra bu ben ile geldi budur. Konum yöneticisini başlatan düğme üzerinde bir dinleyici ayarlayın.

Ben LocationListener uygulayan bir sınıf, MyLocationListener, kurdunuz, sonra temelde onu alır ilk konum textview ekler ve sonra konum yöneticisi kaldırır o kadar söylüyorum, onLocationChanged() yöntemini geçersiz kılar.

Yardım edenlere teşekkürler ve bunun bir başkası için kullanılmasını umuyoruz.

1

Sen android.location.LocationManager.getLastKnownLocation

deneyin Ve Location.getTime(utc time) kullanılarak iade Yer zamanını kontrol etmelidir.

+1

tamam, ve cehaletimi affediyorum, ama lastKnownLocation dosnt şu anki konumumu ima ediyor .. Düğmeye bastığım anda konumumu bulmamı istiyorum, bilinen son konumun gerçekleşmesi mümkün değil yarım saat önce 2 mil yolun arkasında mı? –

+0

onLocationChanged, en güncel konumu almanın en iyi yoludur. – david

+0

Ama bu benim açımdan, eğer durağanım ve şu anda bulunduğum pozisyonu almak istiyorsam? Konumumu, bir konum değişikliğini tetikleyecek olan 0 0'a getirmenin bir yolu var mı? –

0

Konum güncellemeleri isteyin ve bir LocationListener oluşturun (bkz. LocationManager.requestLocationUpdates). Doğruluk hakkında düzenli güncellemeler alacaksınız.

İlk güncelleştirmenizi alana kadar, (kaydedildiği gibi) LocationManager.getLastLocation() numaralı telefonu kullanabilir ve zaman damgasını ve doğruluğunu kontrol edebilirsiniz.

Uyarı Sözcüğü - bazı cihazlar, doğru bir okuma elde etmek için sonsuza kadar süren taramayı alır ve tamamen rasgele olur.

public class UseGps extends Activity 
{ 
    Button gps_button; 
    TextView gps_text; 
    LocationManager mlocManager; 

    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     gps_button = (Button) findViewById(R.id.GPSButton); 
     gps_text = (TextView) findViewById(R.id.GPSText); 

     gps_button.setOnClickListener(new OnClickListener() { 
      public void onClick(View viewParam) { 
       gps_text.append("\n\nSearching for current location. Please hold..."); 
       gps_button.setEnabled(false); 
       mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
       LocationListener mlocListener = new MyLocationListener(); 
       mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 
      } 
     }); 
    } 

    /* Class My Location Listener */ 
    public class MyLocationListener implements LocationListener 
    { 
     @Override 
     public void onLocationChanged(Location loc) 
     { 
      double lon = loc.getLatitude(); 
      double lat = loc.getLongitude(); 
      gps_text.append("\nLongitude: "+lon+" - Latitude: "+lat); 
      UseGps.this.mlocManager.removeUpdates(this); 
      gps_button.setEnabled(true); 
     } 

     @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 
     } 
    } 
} 

Bu bir düğme ve textview ile bir etkinlik kurar:

+0

tamam, öyleyse ben de böyle bir şey .. Başlat düğmesine tıklayın ve bir zaman damgası alın ve temelde benim zaman damgasımdan daha büyük bir zaman damgası ile bir konuma ulaşıncaya kadar lastKnown loaction'ı yoklamaya devam edin .. Ben yerinde bir kontrol yapmanın bir yolu olmadığına inanamıyorum. Kullandığım cihaz google maps veya navigatör kullandığımda konumumu almakta oldukça hızlıdır ... –

+0

Sonuncuya anket yok! En son bilinen bir tanesine bakın ve yukarıda gösterildiği gibi güncellemeler isteyin. Eğer değişirse, bildirim alacaksınız. Değişmezse, lastKnown da değişmeyecek! – EboMike

+0

Tamam, tembel görünmek istemiyorum, ancak en iyi örneği örnek olarak öğreniyorum, bu nedenle o notta (veya herhangi biri) örnek kod gönderebilmenin herhangi bir yolu var mı? –

İlgili konular