我使用 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 时,我只为每个显示一个通知:启动和停止