Android - 活动识别最佳实践

时间:2017-09-02 07:19:08

标签: android android-googleapiclient activity-recognition

在我的Android应用程序中,我只想在用户不移动或只是慢慢移动时显示通知。例如,当用户开车时,我不想显示通知。为了实现这一点,我研究了Activity Recognition API并实现了一个基本组件 - 它基本上可以正常工作。

在第一次测试中,我注意到,当我只是检查具有最高置信度的活动时偶尔会看到一些奇怪的输出,例如,在行走时获得IN_VEHICLE。由于这是基于统计数据而不是基于统计数据,我对此并不感到惊讶。因此,我在最后N个活动类型上使用简单的滑动窗口。只有当窗口中的所有值都相同时,我才会假设相应的活动。

现在我有3个配置参数:

  • TIME_BETWEEN_REQUESTS(以毫秒为单位)作为活动识别API一部分的当前活动值请求之间的最短时间。值越低越新,但电池消耗越高。为了测试,我目前只将它设置为5000(= 5秒)

  • MIN_CONFIDENCE(0..100)最低置信度DetectedActivity.getConfidence()。只有当置信度大于此阈值时,我才认为API对检测到的活动足够有信心。在网络上,我最常见的是MIN_CONFIDENCE >= 75

  • 在我确定检测到的活动之前,
  • WINDOW_SIZE(> = 1)作为相同活动类型的最小数量。目前,我使用WINDOW_SIZE = 3。因此,如果用户正在行走且手机偶然发现IN_VEHICLE,我不会立即假设用户正在开车。仅当接下来的两个值也是IN_VEHICLE时,我才会更改用户的活动状态。

这有意义吗?如果我增加TIME_BETWEEN_REQUESTS,我有点担心 - 无论如何,实际值是多少 - 因为在用户的活动状态发生变化之前它至少需要WINDOW_SIZE * TIME_BETWEEN_REQUEST。现在它是15秒,但如果我将TIME_BETWEEN_REQUESTS设置为30秒并保持WINDOW_SIZE 3,则需要至少90秒才能进行更改。

这里有什么好/最佳做法?窗口是否必要或者TIME_BETWEEN_REQUESTS已经做了某种平滑的更大值?

0 个答案:

没有答案