Распознавание активности Android с непонятным API осведомленности

У меня есть настройка обнаружения движения с помощью Awareness API для заборов для "запуска" и "остановки".

проблема

Приложение обнаруживает, что я вожу около 50% времени, но часто только если / когда я включаю экран во время вождения. Это лишает смысла иметь возможность выполнять некоторые полезные функции моего приложения, когда они за рулем.

Во-вторых, я также часто нахожу, что я возвращаюсь к своему телефону, который сидит на столе, совершенно неподвижно, и на нем отображаются оба уведомления для "запуска" и "остановки" вождения.

Итак, TL;DR... Обнаружение вождения имеет очень много ложных срабатываний и плохую точность при движении.

Кто-нибудь еще заметил это? Что-нибудь, чтобы решить это?

Код

Это довольно просто, настройка с приемником вещания (я также использовал сервис PendingIntent с теми же результатами):

Awareness.FenceApi.updateFences(
            mGoogleClient,
            new FenceUpdateRequest.Builder()
                    .addFence(ActivityChangeReceiver.FENCE_START_DRIVING,
                              DetectedActivityFence.starting(DetectedActivityFence.IN_VEHICLE),
                              ActivityChangeReceiver.getStartDrivingPendingIntent(MainActivity.this))
                    .addFence(ActivityChangeReceiver.FENCE_STOP_DRIVING,
                              DetectedActivityFence.stopping(DetectedActivityFence.IN_VEHICLE),
                              ActivityChangeReceiver.getStopDrivingPendingIntent(MainActivity.this))
                    .build())
                      .setResultCallback(status -> {
                          if (status.isSuccess()) {
                              Timber.i("Fences successfully registered.");
                              registerReceiver(new ActivityChangeReceiver(), new IntentFilter(ActivityChangeReceiver.FENCE_RECEIVER_ACTION));
                          }
                          else {
                              Timber.e("Fences could not be registered: %s", status);
                          }
                      });

Когда я вызываю BroadcastReceiver, я просто показываю уведомление для каждого: запуск и остановка

0 ответов

Другие вопросы по тегам