java—在用户“驻留”时删除broadcastreceiver类中的地理围栏

u91tlkcl  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(168)

因此,我在我的应用程序中添加了一些地理围栏,现在我想在用户居住在半径范围内时删除它们。我的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上的所有地理围栏?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题