Pro*_*cas 16 android locationlistener android-location
我知道BroadcastReceiver会监视文本,电话事件等...但您可以将LocationServices作为基于位置的服务和事件运行吗?
例如,您靠近某个GPS点,手机会通知您.
Dev*_*red 35
我认为你要找的是这样的.有一个版本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);
Run Code Online (Sandbox Code Playgroud)
然后,您只需BroadcastReceiver使用相同的Intent操作注册您,它将收到位置更新以进行处理.而且,当然,保持这个PendingIntent,因为你需要manager.removeUpdates(launchIntent)在某个时候打电话!
最后注意:
因为听起来您正在尝试在应用不在前台时实施定期位置更新,请记住这一点.除非您希望自己的应用品牌成为电池杀手,否则请务必谨慎实施此功能.
您需要使用较大的minTime或minDistance参数来大幅减少频率上升位置更新,以允许位置服务休息.此功能还应附加到用户控制的首选项,以便他们可以启用/禁用您的应用在后台跟踪位置.
希望有帮助!
tas*_*iac 22
这个问题已经超过2年了,但现在已经非常容易且电池效率很高.这个概念叫做Geofences.您可以在下面更详细地了解它:
http://developer.android.com/training/location/geofencing.html