Как заставить уведомления извлекаться только при достижении GeoFire? - PullRequest
0 голосов
/ 20 октября 2019

Я занимаюсь разработкой приложения, которое просто отображает список местоположений на карте, и я создаю GeoFire для того, чтобы при достижении любой области отправлять мне уведомления с музыкой. Проблема здесь, когда я запускаю приложение, я получаю все уведомления о местоположениях одновременно.

Я делаю все внутри цикла, где я называю местоположения

for (final Location location: locationsArea){
        mMap.addCircle(new CircleOptions()
                .center(location.getLocationPoistion())
                .radius(GEOFENCE_RADIUS)
                .strokeColor(Color.argb(50, 70, 70, 70))
                .fillColor(Color.argb(100, 150, 150, 150))
                .strokeWidth(5.0f)
        );

        mMap.addMarker(new MarkerOptions()
                .position(location.getLocationPoistion())
                .title(location.getLocationName())
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE))
        );

        // here when clcik on marker to display the name of marker in alert dialog
        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {

                openAlertDialog(location.getLocationName());
                return false;
            }
        });


        // create a GeoQuery when user reach a location in dangerousArea
        GeoQuery geoQuery = geofire.queryAtLocation(new GeoLocation(location.getLocationPoistion().latitude,
                location.getLocationPoistion().longitude), GEOFENCE_RADIUS);

        geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onKeyEntered(String key, GeoLocation location) {
                Log.d(tag, "onKeyEntered");

                sendNotification("Qadomy", String.format("%s entered the location", key));
            }

            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onKeyExited(String key) {
                Log.d(tag, "onKeyExited");

                sendNotification("Qadomy", String.format("%s leaving the location", key));

            }

            @Override
            public void onKeyMoved(String key, GeoLocation location) {
                Log.d(tag, "onKeyMoved");

                //sendNotification("Qadomy", String.format("%s move within the location", key));

            }

            @Override
            public void onGeoQueryReady() {
                Log.d(tag, "onGeoQueryReady");

            }

            @Override
            public void onGeoQueryError(DatabaseError error) {
                Log.d(tag, "onGeoQueryError");

                Toast.makeText(MapsActivity2.this, error.getMessage(), Toast.LENGTH_SHORT).show();
            }

        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...