2011-05-26 230 views
1

我正在開發一個由幾個活動組成的Android應用程序。我想從GPS(onLocationChanged,onProviderDisabled,onProviderEnabled,onStatusChanged)獲取更新,無論用戶當前正在使用哪些活動。Android - GPS偵聽器

我應該在哪裏實施LocationListener才能獲得這樣的行爲?

這是我創建的類:

public class MyLocationListener implements LocationListener{ 

private LocationManager locationManager; 
private String provider; 

    @Override 
public void onLocationChanged(Location locationGPS) { 

    //do something 
} 

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

} 

@Override 
public void onProviderEnabled(String provider) { 
    Log.i("===========================", "=============================="); 
    Log.i("onProviderEnabled", "=============================="); 
    Log.i("===========================", "=============================="); 

} 

@Override 
public void onProviderDisabled(String provider) { 

    Log.i("===========================", "=============================="); 
    Log.i("onProviderDisabled", "=============================="); 
    Log.i("===========================", "=============================="); 
} 

回答

4

在您想要啓動gps的活動上啓動位置偵聽器。要開始,你可以使用

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    LocationListener locationListener = new CTLocationListener(); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1.0f, locationListener); 

並停止GPS的GPS可以使用

locationManager.removeUpdates(locationListener); 

其更好你寫的GPS上的onCreate /在onStart啓動,GPS上的的的onDestroy刪除服務和使用該服務。否則,一旦停止GPS,某些設備中再次啓動GPS的機會不到50%。

+0

我需要所有活動中的GPS數據。 – 2011-05-26 12:53:31

+0

@Udi I - 只要「onLocationChanged」上的位置發生變化,就會在LocationListener上獲取位置更新。爲此,您必須讓一個類說實現LocationListener並實現重寫方法的GPSListener。 – includeMe 2011-05-26 13:00:53

+0

好的,這工作:) 10倍很多! – 2011-05-26 13:35:22

1

創建一個Service和顯示器的位置在那裏。或者,您可以在單獨的課程中實施LocationListener,並在每Activity中使用它,將其打開爲onResume並關閉。

+0

我已經嘗試過這種方式,但是我得到了以下錯誤:「不能在沒有調用Looper.prepare()的線程中創建處理程序」 – 2011-05-26 12:52:39

+0

好吧,您需要顯示一些代碼。看起來您正在從手動啓動的線程請求位置更新。 – Olegas 2011-05-26 12:58:17