1

Ich baue eine mobile Anwendung, mit der ich die Arbeit von Geofencing auf Android-Handys testen kann. Ich habe eine Anwendung, die GoogleApiClient für FusedLocationApi.requestLocationUpdates verwendet. Ich bekomme alle Updates, die ich auf der Karte in meinem MapFragment zeige. Ich versuche dann, die Geofences mit GeofencingClient hinzuzufügen.Android Geofencing kann nicht ausgelöst werden IntentService

Dieser Code wird ausgeführt und ich bekomme zurück, dass sie erfolgreich hinzugefügt wurden. Aber wenn ich an dem Ort bin, an dem der Geofence ausgelöst werden soll, rufe ich den IntentService nicht an. Ich füge auch die IntentService:

private PendingIntent getGeofencePendingIntent() { 
    if (mGeofencePendingIntent != null) { 
     return mGeofencePendingIntent; 
    } 
    Intent intent = new Intent(this, GeofenceService.class); 
    return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
} 

Ich schaffe auch eine GeofencingRequest, wo ich die Initialzündung gesetzt, wenn eingegeben.

private GeofencingRequest getGeofencingRequest() { 
    GeofencingRequest.Builder builder = new GeofencingRequest.Builder() 
      .setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER) 
      .addGeofences(mGeofenceList); 
    return builder.build(); 
} 

Und das ist, wo ich die ArrayList<Geofence> mGeofenceList schaffen, in dem ich alle geofences hinzufügen:

public void createGeofenceList() { 
    GeofenceList geofences = new GeofenceList(); 
    ArrayList<GeofenceModel> geofenceList = (ArrayList) geofences.returnGeofences(); 
    for (GeofenceModel geofence : geofenceList) { 
     mGeofenceList.add(new Geofence.Builder() 
       .setRequestId(geofence.getREQ_ID()) 
       .setCircularRegion(
         geofence.getLocation().latitude, 
         geofence.getLocation().longitude, 
         geofence.getRadius() 
       ) 
       .setExpirationDuration(geofence.getExpire()) 
       .setTransitionTypes(geofence.getTransition()) 
       .build()); 
    } 
    addGeofenceList(); 
} 

Meine ganze Projekte auf GitHub ist. Alle Hilfe wird geschätzt!

Antwort

0

In Ihrem Manifest Dienst Erklärung ersetzen, die

<service android:name="services.GeofenceService" />

dieser

<service android:name="services.GeofenceService" android:exported="true"/>

Grundsätzlich ist, sollten Sie Ihren Dienst markieren als exported so Android OS Ihre IntentService

aufrufen
Verwandte Themen