GEOFENCE_TRANSITION_ENTER
またはGEOFENCE_TRANSITION_DWELL
ジオフェンスをターゲット座標 (Place F) に登録する必要があります。
Activity/Fragment onCreate で、Api クライアントを作成する必要があります。
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
また、接続/切断することを忘れないでください:
protected void onStart() {
mGoogleApiClient.connect();
super.onStart();
}
protected void onStop() {
mGoogleApiClient.disconnect();
super.onStop();
}
次に、onConnected
次のことを行う必要があります。
LocationServices.GeofencingApi.addGeofences(mGoogleApiClient,
geofenceRequest,
pendingIntent)
ジオフェンスは一度だけ追加してください。
geofenceRequest が GeofencingRequest.Builder を使用して構築される場所:
geofenceRequest = new GeofencingRequest.Builder().addGeofence(yourGeofence).build()
yourGeofence と pendingIntent の場所:
yourGeofence = new Geofence.Builder()....build(); // Here you have to set the coordinate of Place F and GEOFENCE_TRANSITION_ENTER/GEOFENCE_TRANSITION_DWELL
pendingIntent = PendingIntent.getService(this,
(int)(System.currentTimeMillis()/1000),
new Intent(this, GeofenceTransitionsIntentService.class),
PendingIntent.FLAG_UPDATE_CURRENT);
GeofenceTransitionsIntentService は次のようになります。
public class GeofenceTransitionsIntentService extends IntentService {
@Override
protected void onHandleIntent(Intent intent) {
GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
if (!geofencingEvent.hasError()) {
int geofenceTransition = geofencingEvent.getGeofenceTransition();
if (geofenceTransition != -1) {
List<Geofence> triggeringGeofences = geofencingEvent.getTriggeringGeofences();
if (triggeringGeofences != null && triggeringGeofences.size() > 0) {
Geofence geofence = triggeringGeofences.get(0);
// Do something with the geofence, e.g. show a notification using NotificationCompat.Builder
}
}
}
}
}
このサービスをマニフェストに登録することを忘れないでください。
<service android:name=".GeofenceTransitionsIntentService"/>
GeofenceTransitionsIntentService.onHandleIntent()
アプリを閉じていても呼び出されます。
それが役に立てば幸い。