Android Geofencing退出触发器

问题描述

我一直在尝试实现地理围栏以在我的应用程序中启动某些服务,而输入触发器起作用时,我似乎无法使退出触发器也能正常工作。

我正在从firebase读取纬度长半径,以便于访问和调试。这是我的代码

private val geofencePendingIntent: PendingIntent by lazy {
    val intent = Intent(this,GeofencebroadcastReceiver::class.java)
    intent.action = GEOFENCE
    PendingIntent.getbroadcast(this,intent,PendingIntent.FLAG_UPDATE_CURRENT)
}
private fun addGeoFence() {
    val geoFenceRequest = getGeoFencingRequest()
    checkOrAskLocationPermission {
        geofencingClient.addGeofences(geoFenceRequest,geofencePendingIntent)
            .addOnSuccessListener {
                Log.d(TAG,"GeoFence Added")
            }.addOnFailureListener {
                Log.d(TAG,"GeoFence Failed to Add")
            }
    }
}

private fun getGeoFencingRequest(): GeofencingRequest {
    val geoFence = Geofence.Builder()
        .setRequestId(GEO_FENCING_REQUEST_CODE)
        .setExpirationDuration(Geofence.NEVER_EXPIRE)
        .setCircularRegion(
            lat,lng,radius
        )
        .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER or Geofence.GEOFENCE_TRANSITION_EXIT)
        .build()

    val geoFenceList: MutableList<Geofence> = mutablelistof(geoFence)

    return GeofencingRequest.Builder().apply {
        setinitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER or GeofencingRequest.INITIAL_TRIGGER_EXIT)
        addGeofences(geoFenceList)
    }.build()
}

这是接收者,在调用触发器之后我必须做些事情

class GeofencebroadcastReceiver : broadcastReceiver() {

override fun onReceive(context: Context?,intent: Intent?) {
    val geofencingEvent = GeofencingEvent.fromIntent(intent)
    val geofenceTransition = geofencingEvent.geofenceTransition

    context?.let {
        if (intent?.action == Constants.GEOFENCE)
            if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER) {
                //Start 
            } else if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_EXIT) {
                //Stop 
            }
    }
}

}

为什么退出转换永远不会触发?

对于其他情况,我将lat放在火场上,当我第一次将半径设置为100时,我会看到输入触发器,但是即使将半径减小到1,它也永远不会触发出口,还是我必须实际上与设备本身相距很远?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...