2011-05-26 190 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