Я использую IntentService в качестве TrasitionService в приложении Geofence, теперь мой код генерирует уведомление, но я хочу вместо этого отправить сообщение - PullRequest
0 голосов
/ 01 июня 2019

Я использую Google Location API для создания геозоны и сервиса Intent для прослушивания геозон. В настоящее время мой код генерирует уведомление при входе или выходе из геозоны, но вместо этого я хочу отправить SMS-сообщение или позвонить!Как я могу добиться этого, потому что IntentService работает в фоновом режиме

        private static final long GEO_DURATION = 60 * 60 * 1000;
        private static final String GEOFENCE_REQ_ID = "My Geofence";
        private static final float GEOFENCE_RADIUS = 500.0f; // in meters

private void startGeofence() {
Log.i(TAG, "startGeofence()");`enter code here`
if( geoFenceMarker != null ) {
 Geofence geofence = createGeofence( geoFenceMarker.getPosition(), GEOFENCE_RADIUS );
 GeofencingRequest geofenceRequest = createGeofenceRequest( geofence );
                    addGeofence( geofenceRequest );
                } else {
                    Log.e(TAG, "Geofence marker is null");
                }
            }
        // Create a Geofence
        private Geofence createGeofence( LatLng latLng, float radius ) {
            Log.d(TAG, "createGeofence");
            return new Geofence.Builder()
                    .setRequestId(GEOFENCE_REQ_ID)
                    .setCircularRegion( latLng.latitude, latLng.longitude, radius)
                    .setExpirationDuration( GEO_DURATION )
                    .setTransitionTypes( Geofence.GEOFENCE_TRANSITION_ENTER
                            | Geofence.GEOFENCE_TRANSITION_EXIT )
                    .build();
        }

        // Create a Geofence Request
        private GeofencingRequest createGeofenceRequest( Geofence geofence ) {
            Log.d(TAG, "createGeofenceRequest");
            return new GeofencingRequest.Builder()
                    .setInitialTrigger( GeofencingRequest.INITIAL_TRIGGER_ENTER )
                    .addGeofence( geofence )
                    .build();
        }

        private PendingIntent geoFencePendingIntent;
        private final int GEOFENCE_REQ_CODE = 0;
        private PendingIntent createGeofencePendingIntent() {
            Log.d(TAG, "createGeofencePendingIntent");
            if ( geoFencePendingIntent != null )
                return geoFencePendingIntent;

            Intent intent = new Intent( this, GeofenceTrasitionService.class);
            return PendingIntent.getService(
                    this, GEOFENCE_REQ_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT );
        }

        // Add the created GeofenceRequest to the device's monitoring list
        private void addGeofence(GeofencingRequest request) {
            Log.d(TAG, "addGeofence");
            if (checkPermission())
                LocationServices.GeofencingApi.addGeofences(
                        googleApiClient,
                        request,
                        createGeofencePendingIntent()
                ).setResultCallback(this);
        }  
      @Override
        public void onResult(@NonNull Status status) {
            Log.i(TAG, "onResult: " + status);
            if ( status.isSuccess() ) {
                saveGeofence();
                drawGeofence();
            } else {
                // inform about fail

        }
...