GeoFence вызывая вопроспродолжает Trigger GeoFence Event
У меня есть настройки Geofence в моем приложении, я использую IntetnService для события триггера ручки.
Моя проблема связана с событием триггера много раз.
Пусть я на 1 Местоположение внутри Geofence, к сожалению, некоторое время входа или выхода триггера события, Тогда я действительно хотел проверить geoEvent.getTriggerdLocation() свойства и проверить с гео радиусом забор,
если расположение триггера к географическому расстоянию загородки больше, чем радиус геосексуальности, а затем я освобожу свое функциональное событие выхода,
, но в конце концов событие триггера геоффенса 2 3 км далеко, даже я уже зашел в забор, и моя логика выше не будет. см оснастке
я хочу некоторые твердые исправления для них.
Место находится на с высоким приоритетом
это происходит больше, когда я буду вблизи границы забора
Добавить гео список забор, как сейчас я использую только один забор.
mGeofenceList.add(new Geofence.Builder().setRequestId(String.valueOf(loGeoFenceModels.liGeoFenceID))
.setCircularRegion(loGeoFenceModels.ldGeoLatitude, loGeoFenceModels.ldGeoLongitude,
loGeoFenceModels.lfRadius)
.setExpirationDuration(Geofence.NEVER_EXPIRE)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER | Geofence.GEOFENCE_TRANSITION_EXIT)
.build());
PendidngIntentService
moGeofencePendingIntent = getGeofencePendingIntent();
LocationServices.GeofencingApi
.addGeofences(moLocationClient, getGeofencingRequest(), moGeofencePendingIntent)
.setResultCallback(this);
getGeofencingRequest() И moGeofencePendingIntent
private GeofencingRequest getGeofencingRequest() {
return new GeofencingRequest.Builder().setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER)
.addGeofences(mGeofenceList).build();
}
private PendingIntent getGeofencePendingIntent() {
// Reuse the PendingIntent if we already have it.
if (moGeofencePendingIntent != null) {
return moGeofencePendingIntent;
}
Intent intent = new Intent(moContext, GeofenceTransitionsIntentService.class);
// We use FLAG_UPDATE_CURRENT so that we get the same pending intent
// back when calling addgeoFences()
return PendingIntent.getService(moContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
GeofenceTransitionsIntentService.class
import java.util.ArrayList;
import java.util.List;
import com.google.android.gms.location.Geofence;
import com.google.android.gms.location.GeofenceStatusCodes;
import com.google.android.gms.location.GeofencingEvent;
import android.R.bool;
import android.app.IntentService;
import android.app.usage.UsageEvents.Event;
import android.content.Intent;
import android.database.Cursor;
import android.location.Location;
import android.text.TextUtils;
public class GeofenceTransitionsIntentService extends IntentService {
protected static final String TAG = "GeofenceTransitionsIS";
public GeofenceTransitionsIntentService() {
super(TAG); // use TAG to name the IntentService worker thread
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
private static String getGeofenceTransitionDetails(GeofencingEvent event) {
String transitionString = GeofenceStatusCodes.getStatusCodeString(event.getGeofenceTransition());
List<String> triggeringIDs = new ArrayList<String>();
for (Geofence geofence : event.getTriggeringGeofences()) {
triggeringIDs.add(geofence.getRequestId());
}
return String.format("%s: %s", transitionString, TextUtils.join(", ", triggeringIDs));
}
@Override
protected void onHandleIntent(Intent intent) {
GeofencingEvent event = GeofencingEvent.fromIntent(intent);
Log.i(TAG, "Geofencing Event : " + event);
if (event.hasError()) {
Log.i(TAG, "GeofencingEvent Error : " + event.getErrorCode());
return;
}
// Get the type of transition (entry or exit)
if (event.getGeofenceTransition() == Geofence.GEOFENCE_TRANSITION_ENTER) {
Log.i(TAG, "GeofencingEvent Enter");
}
if (event.getGeofenceTransition() == Geofence.GEOFENCE_TRANSITION_EXIT) {
Log.i(TAG, "GeofencingEvent Exit");
?
String description = getGeofenceTransitionDetails(event);
Log.i(TAG, "GeofencingEvent description : " + description);
}
}
Права доступа
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.hardware.location.gps" />
я застрял в этом вопросе, так как много дней, пожалуйста, помогите, чтобы закончить эту проблему.
Опубликовать больше кода. –
@kishorejethava это нормально? –
Вы проверили идентификатор запроса Geofence? Возможно, что оба являются ИД запроса запроса. –