我有一个 GPSTracker 类,其中 extends Service implements LocationListener
并且 GPSTracker 也覆盖了 onLocationChanged 方法。

在我的 MainActivity 中,我创建了一个 GPSTracker 实例并使用我在 GPSTracker 类中声明的自定义方法来获取纬度/经度。

MainActivityGPSTracker 被触发时,如何让我的 onLocationChanged 得到通知?
GPSTracker

public class GPSTracker extends Service implements LocationListener {
    ...

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

    ...

    public GPSTracker(Context context) {
        this.mContext = context;
        getLocation();
    }

    public Location getLocation() {
        ...
        return location;
    }


    public void stopUsingGPS(){
        ...
    }


    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(){
        ...
        // Showing Alert Message
        alertDialog.show();
    }

    @Override
    public void onLocationChanged(Location location) {
        // do some stuff
    }

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

}

最佳答案

我看到两种通知您的 MainActivity 的方法:

首先,您可以创建一个在 MainActivity 上实现并由 GPSTracker 触发的监听器。

其次,您可以查看 BroadcastReceiver。只需在您的主要 Activity 上添加一个 BroadcastReceiver。在您的方法 OnLocationChanged 上,您只需创建一个新 Intent :

Intent intent = new Intent("LocationChanged");
intent.setType("text/plain");
sendBroadcast(intent);

我认为第一个解决方案不是最简单的,而是更好的。

关于android - 从 Activity 监听 onLocationChanged,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20283534/

10-12 05:33