服务在地图android上显示点

时间:2010-10-14 19:16:43

标签: android android-activity gps

我有一个在后台运行的android服务,它每隔几秒就从服务器接收一次坐标。我不确定每次服务从服务器收到响应时如何在地图上显示坐标。请帮助或提出想法。

感谢

2 个答案:

答案 0 :(得分:1)

只要想要更新地图上显示的位置,您的服务就可以广播意图。显示地图的活动应该为该boradcast注册接收器,并且boradcast的意图可以保存lat的值。而且很长。

答案 1 :(得分:1)

我不知道这方面的任何教程,但这是我的一个版本:

要发送广播,请使用Context类的“sendBroadcast(Intent i)”方法。 Service类扩展了Context,因此您可以从实现中访问它。

所以在你的服务中:

public static final String BROADCAST_ACTION="com.yourservice.update";

public void onStart( Intent intent, int startId ) {
...
Intent broadcastIntent = new Intent(BROADCAST_ACTION); 
   sendBroadcast(broadcastIntent);
...
}

您必须在Activity中注册此广播的接收器(可能在您开始播放之前),如下所示:

private BroadcastReceiver receiver=new BroadcastReceiver() {
  public void onReceive(Context context, Intent intent) {

                        //Here goes handling the stuff you got from the service
   Bundle extras = intent.getExtras();
   if(extras != null)processUIUpdate(extras);
  }
};

public void onResume() {
...
//Register for the update broadcasts from the torrent service
registerReceiver(receiver, new IntentFilter(YourService.BROADCAST_ACTION));
...
}

当活动进入后台时,不要忘记取消注册:

public void onPause() {
...
  //Deregister for the update broadcast from the torrent service
  unregisterReceiver(receiver);
...
}

这应该有用。