听取位置从活动改变

时间:2013-11-29 10:27:18

标签: android gps android-activity location

我有GPSTrackerextends Service implements LocationListenerGPSTracker也会覆盖onLocationChanged方法。

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

如果MainActivity的{​​{1}}被触发,如何通知我GPSTracker

onLocationChanged班级

GPSTracker

3 个答案:

答案 0 :(得分:3)

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

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

其次,您可以查看BroadcastReceiver。只需在主要活动上添加BroadcastReceiver即可。在OnLocationChanged方法上,您只需创建一个新意图:

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

我认为第一种解决方案不是最容易的,而是更好的。

答案 1 :(得分:1)

您可以通过服务广播更改。

Intent broadcastIntent = new Intent("com.example.broadcast.gps.location_change");
broadcastIntent .putDouble("latitude", latitude);
broadcastIntent .putDouble("longitude", longitude);
sendBroadcast(broadcastIntent);

然后在你的MainActivity听广播。

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        double latitude = intent.getDoubleExtra("latitude", 0.0);
        double longitude = intent.getDoubleExtra("longitude", 0.0);
    }
};
registerReceiver(receiver, new IntentFilter("com.example.broadcast.gps.location_change"));

答案 2 :(得分:0)

您应该在MainActivity中声明一个方法,如下所示

    public void notifyLocationChanged(Double lat, Double lng){
     //do some thing
    }

在onLocationChanged方法的GPSTracker课程中

 @Override
public void onLocationChanged(Location location) {
   ((MainActivity)mContext).notifyLocationChanged(location.getLatitude(),location.getLongitude())
}