我知道BroadcastReceiver可以监听文本、电话事件等,但是你可以将LocationServices作为服务运行并基于位置信息来触发事件吗?
例如,当你接近某个GPS点时,手机会通知你。
我知道BroadcastReceiver可以监听文本、电话事件等,但是你可以将LocationServices作为服务运行并基于位置信息来触发事件吗?
例如,当你接近某个GPS点时,手机会通知你。
我认为你要找的是这样的东西。有一种 LocationManager.requestLocationUpdates()
的版本,它接受一个PendingIntent
参数,这个Intent可以用来触发一个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);
然后您只需使用相同的Intent操作注册您的BroadcastReceiver,它将接收位置更新以进行处理。 当然,保留该PendingIntent,因为您需要在某个时刻调用manager.removeUpdates(launchIntent)!这个问题已经超过两年了,但现在有一种非常简单和节能的方法来实现它。这个概念称为 地理围栏。您可以在以下链接中详细了解:
http://developer.android.com/training/location/geofencing.html