应用程序打开时使用LocationListener [Android]

时间:2014-05-23 13:29:19

标签: android gps

我正在开发我的第一个应用程序,这个应用程序有2个活动:主要活动和第二个活动。这两个活动都需要知道用户位置,所以我创建了一个这样的类(我编辑了一个“互联网”类):

public class GPSTracker extends Service implements LocationListener {

private final Context mContext;

// flag for GPS status
boolean isGPSEnabled = false;

// flag for network status
boolean isNetworkEnabled = false;

// flag for GPS status
boolean canGetLocation = false;

boolean GPSForce = false;

Location location; // location
double latitude; // latitude
double longitude; // longitude

private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute

protected LocationManager locationManager;

public GPSTracker(Context context, Boolean forcegps) {
    this.mContext = context;
    this.GPSForce = forcegps;
    getLocation();
}

public Location getLocation() {
...
}

public void startUsingGPS(){
    getLocation();
}

public void stopUsingGPS(){
    if(locationManager != null){
        locationManager.removeUpdates(GPSTracker.this);
    }

    canGetLocation = false;
}

public double getLatitude(){
    if(location != null){
        latitude = location.getLatitude();
    }

    return latitude;
}

public double getLongitude(){
    if(location != null){
        longitude = location.getLongitude();
    }

    return longitude;
}

public boolean canGetLocation() {
    return this.canGetLocation;
}

public void showSettingsAlert(){
...
}

@Override
public void onLocationChanged(Location location) {
    if (location != null) {
        latitude = location.getLatitude();
        longitude = location.getLongitude();
    }
}

@Override
public void onProviderDisabled(String provider) {
}

@Override
public void onProviderEnabled(String provider) {
}

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

@Override
public IBinder onBind(Intent arg0) {
    return null;
}

在主要活动上我在onCreate事件上创建一个基于GPSTracker的对象然后我在onStop事件上使用stopUsingGPS()来停止GPS,当用户关闭应用程序并在onResume事件上startUsingGPS()时重启GPS使用。

我的问题是我需要在第二次活动时使用GPSTracker,但是当第二次活动打开时我的代码停止了GPS(当用户退出应用程序时,当第二次活动打开时,也会调用onStop事件)。 / p>

我认为我的做法是错误的。

如何创建GPSTracker对象并执行此操作: - 仅在用户退出应用程序时停止GPS使用; - 在我需要的所有活动中使用它;

此外我想从活动中触发更改坐标,但我不知道该怎么办?

1 个答案:

答案 0 :(得分:0)

您需要在MainActivity的onDestroy中调用stopUsingGPS()。因此,当用户完全退出您的应用时,只有GPS跟踪才会停止。每当您的活动暂停时,onStop都会被调用。因此,请在MainActivity的onDestroy中调用stopUsingGPS()方法。