Android:如何在应用处于非活动状态时向服务器发送位置信息

时间:2011-11-22 07:27:21

标签: android design-patterns

实施定期将其位置发送到服务器的基于位置的Android应用的适当方法是什么?

以下是我想要实施的具体流程:

  1. 主要Android应用程序处于非活动状态(即尚未启动)
  2. 根据设备的GPS位置,服务器可以将消息(通过C2DM)推送到设备
  3. 收到消息后,通知栏中会显示通知(可用于启动应用)
  4. 我的主要困惑源于第1点:如果应用尚未启动,如何将GPS坐标发送到服务器?是否仅仅是实施定期将电话位置发送到服务器的服务?如何在用户安装应用程序后确保服务始终运行?

    (适用于Android的Groupon应用程序执行类似操作,即使应用程序处于非活动状态,您也会间歇性地收到附近交易的通知。是否知道他们如何实施此操作?)

3 个答案:

答案 0 :(得分:1)

查看this文章。示例代码给出了您正在做的事情的一个很好的例子。

答案 1 :(得分:0)

您可以简单地创建后台服务,然后实现位置监听器。在该位置监听器中,您可以使用requestLocationUpdate方法设置时间间隔,以便以特定时间间隔对GPS进行ping操作。 这是一个位置管理器实例:

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, timeinterval2, 0, locationListener);

您可以从服务将该位置发送到服务器。您还可以发送通知以启动该应用。

答案 2 :(得分:0)

我不会只使用Service,最好每次使用AlarmManager设置闹钟(5分钟,15分钟或您需要的),然后获取位置。 @CommonsWare做了一些非常有用的code(它还涉及WEAK_LOCKS所以如果手机进入睡眠状态,一切仍然运行等等。)

此外,您不需要使用C2DM,因为您必须将您的位置发送到服务器,服务器会使用地理信息回复您。 C2DM仅适用于您未开始通信的情况。