#java #android #broadcastreceiver #google-awareness
#java #Android #broadcastreceiver #google-осведомленность
Вопрос:
Пожалуйста, помогите мне понять, почему мой забор осведомленности, который я установил, не возвращает ИСТИННОЕ состояние для того, чтобы быть «неподвижным». Я запускаю приложение на своем телефоне, и я «Неподвижен», и я некоторое время держал телефон «неподвижным», чтобы убедиться, что в триггере нет задержки.
Примечание: мой забор успешно зарегистрирован, поэтому это не может быть проблемой с запросом api и т. Д. Мой широковещательный приемник также никогда не запускается.
Результатом приведенного ниже кода является:
I/Awareness: Fence was successfully registered.
I/Awareness: Fence sitting_at_work: 0, was=0
Код:
AwarenessFence sittingFence = DetectedActivityFence.during(DetectedActivityFence.STILL);
Intent intent = new Intent(getContext(), activityReceiver.class);
intent.setAction(activityReceiver.ACTION_FENCE);
myPendingIntent = PendingIntent.getBroadcast(getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Awareness.getFenceClient(getContext()).updateFences(new FenceUpdateRequest.Builder()
.addFence(activityReceiver.KEY_SITTING_AT_WORK, sittingFence, myPendingIntent)
.build())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.i("Awareness", "Fence was successfully registered.");
Awareness.getFenceClient(getContext())
.queryFences(FenceQueryRequest.forFences(Arrays.asList(activityReceiver.KEY_SITTING_AT_WORK)))
.addOnSuccessListener(new OnSuccessListener<FenceQueryResponse>() {
@Override
public void onSuccess(FenceQueryResponse response) {
FenceStateMap map = response.getFenceStateMap();
for (String fenceKey : map.getFenceKeys()) {
FenceState fenceState = map.getFenceState(fenceKey);
Log.i("Awareness", "Fence " fenceKey ": "
fenceState.getCurrentState()
", was="
fenceState.getPreviousState());
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("Awareness", "Could not query fence: " activityReceiver.KEY_SITTING_AT_WORK);
return;
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("Awareness", "Fence could not be registered: " e);
}
});
BroadcastReceiver onReceive:
if (TextUtils.equals(ACTION_FENCE, intent.getAction())) {
FenceState fenceState = FenceState.extract(intent);
Log.d("Awareness", "Detected fence action"); }