【发布时间】:2018-11-30 13:50:47
【问题描述】:
我遵循本教程:https://developer.android.com/training/location/geofencing 并且在 Android
当应用在后台时,如何获取地理围栏转换触发器?
我也试过用BroadcastReceiver代替IntentService,但结果是一样的。
待定意图:
private val geofencePendingIntent: PendingIntent by lazy {
val intent = Intent(context, GeofenceBroadcastReceiver::class.java)
intent.action = "com.example.GEOFENCE_TRANSITION"
PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
}
注册地理围栏:
geofencingClient.addGeofences(request, geofencePendingIntent).run {
addOnSuccessListener {
Log.d(TAG, "Geofence added")
}
addOnFailureListener {
Log.e(TAG, "Failed to create geofence")
}
}
广播接收器:
class GeofenceBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(p0: Context?, p1: Intent?) {
Log.d(TAG, "onReceive")
}
}
清单中的接收者:
<receiver android:name=".GeofenceBroadcastReceiver">
<intent-filter>
<action android:name="com.example.GEOFENCE_TRANSITION"/>
</intent-filter>
</receiver>
谢谢
编辑:IntentService 版本
待定意图:
private val geofencePendingIntent: PendingIntent by lazy {
val intent = Intent(context, GeofenceIntentService::class.java)
PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
}
意向服务:
class GeofenceIntentService : IntentService("GeofenceIntentService") {
override fun onHandleIntent(p0: Intent?) {
Log.d(TAG, "onHandleIntent")
}
}
清单中的服务:
<service android:name=".GeofenceIntentService"/>
【问题讨论】:
-
你可以在你使用 IntentService 时发布代码吗?
-
是的,我编辑了问题
-
阅读这些链接
标签: android geolocation gps geofencing android-geofence