因此,我在我的应用程序中添加了一些地理围栏,现在我想在用户居住在半径范围内时删除它们。我的geofencebroadcastreceiver实现如下:
@Override
public void onReceive(Context context, Intent intent) {
GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
TextToSpeech mTTS = new TextToSpeech(context, status -> {
if (status == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.ENGLISH);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
}
} else {
Log.e("TTS", "Initialisation failed");
}
});
if (geofencingEvent.hasError()) {
Log.d(TAG, "onReceive: Error receiving geofence event");
return;
}
List<Geofence> geofenceList = geofencingEvent.getTriggeringGeofences();
for (Geofence geofence : geofenceList) {
Log.d(TAG, "onReceive: " + geofence.getRequestId());
}
int transitionType = geofencingEvent.getGeofenceTransition();
switch (transitionType) {
case Geofence.GEOFENCE_TRANSITION_ENTER:
Toast.makeText(context, "Elevation alert", Toast.LENGTH_SHORT).show();
break;
case Geofence.GEOFENCE_TRANSITION_DWELL :
Toast.makeText(context, "GEOFENCE_TRANSITION_DWELL", Toast.LENGTH_SHORT).show();
break;
}
}
我认为我可以使用这个意图来移除已经触发的地理围栏(我不知道触发是否意味着进入、停留或退出),这个帖子几乎解决了我的问题:在转换之后移除触发的地理围栏
但是,我只想删除当前居住的地理围栏,如果我要使用上述方法,我需要访问我的主要活动中的地理围栏客户端,以调用remove geofines方法。
我还想添加更好的输出方式(即不仅仅是toast消息),如振动等(您可以看到texttospeech对象)。我得到一个错误,说它还没有初始化。
跟进:
为了澄清另一件事,我认为调用map.clear()会删除当前Map上的所有地理围栏?
暂无答案!
目前还没有任何答案,快来回答吧!