我知道BroadcastReceiver手表的文本,电话事件等......但你可以运行LocationServices作为基于位置的服务和事件吗?BroadcastReceiver的位置
例如,您接近某个GPS点并且电话会通知您。
我知道BroadcastReceiver手表的文本,电话事件等......但你可以运行LocationServices作为基于位置的服务和事件吗?BroadcastReceiver的位置
例如,您接近某个GPS点并且电话会通知您。
我认为你在找什么是这样的。有一个版本LocationManager.requestLocationUpdates()
需要PendingIntent
作为参数,并且这个意图可以用来触发BroadcastReceiver
。此代码将注册一个自定义广播,并与位置更新一起启动。
Intent intent = new Intent("UNIQUE_BROADCAST_ACTION_STRING_HERE");
LocationManager manager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
long minTime; //This should probably be fairly long
float minDistance; //This should probably be fairly big
String provider; //GPS_PROVIDER or NETWORK_PROVIDER
PendingIntent launchIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
manager.requestLocationUpdates(provider, minTime, minDistance, launchIntent);
然后你只需要注册BroadcastReceiver
具有相同意图的动作,它会接收处理的位置更新。当然,请保持PendingIntent
,因为您需要在某个时候致电manager.removeUpdates(launchIntent)
!
最后请注意:
因为它听起来像你想实现定期位置更新,而您的应用程序是不是在前台,这记在心上。除非你希望你的应用被称为电池杀手,否则要非常小心你如何实现这个功能。
您将希望通过大minTime或minDistance参数大大减少位置更新的频率,以允许位置服务休息。此功能还应附加到用户控制的偏好,以便他们可以启用/禁用您的应用程序以跟踪后台中的位置。
希望有助于!
@无线的设计,你是一个宝石,我认为是这样,我仍然在学习有关Droid的INTENT,你的回答非常丰富 - 感谢你的时间先生! – ProNeticas 2011-03-09 05:09:12
没问题。如果这个答案最终解决了你的问题,随时接受它。干杯! – Devunwired 2011-03-09 05:51:13
我会的,我想先测试;) – ProNeticas 2011-03-09 06:50:33
这个问题已经超过2年了,但现在有非常简单和节省电池的方法来做到这一点。这个概念被称为地理栅栏。您可以更详细地了解它下面:
http://developer.android.com/training/location/geofencing.html
在这里你去http://developer.android.com/reference/android/location/LocationListener.html – schwiz 2011-03-09 02:34:39