Ограждения API осведомленности Google

#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"); }