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