Распознавание активности 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, я просто показываю уведомление для каждого: запуск и остановка