我知道 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);
然后你只需注册你的BroadcastReceiver
使用相同的 Intent 操作,它将接收位置更新以进行处理。当然,保留这一点PendingIntent
因为你需要打电话manager.removeUpdates(launchIntent)
在某一点!
最后注意事项:
因为听起来您正在尝试在应用程序不在前台时实施定期位置更新,所以请记住这一点。除非您希望您的应用被打上电池杀手的标签,否则在实现此功能时要格外小心。
您将需要使用较大的 minTime 或 minDistance 参数来大大降低位置更新的频率,以允许定位服务休息。此功能还应该附加到用户控制的首选项,以便他们可以启用/禁用您的应用程序在后台跟踪位置。
希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)