Bar*_*zky 6 android google-play-services activity-recognition
在Google Play服务活动识别中有
DetectedActivity.RUNNING,
DetectedActivity.WALKING,
DetectedActivity.ON_FOOT
Run Code Online (Sandbox Code Playgroud)
当我得到行走或跑步的活动更新时,我得到ON_FOOT
我该如何区分?
我知道它说RUNNING和WALKING:"这是ON_FOOT的子活动"
谢谢你的帮助.
小智 6
所提供的walkingOrRunning()方法emil10001的作品,但它不能置信度最高,以获得活动(跑步或步行),这是因为,第二个条件,如果条款中他对循环总是比较活动的信心0.
为了澄清这一点,我们假设我们将一个大小为2的"probableActivities"列表作为walkOrRunning()方法的参数传递,即:我们调用walkingOrRunning(probableActivities).
假如,
列出probableActivities = [activity1,activity2],
哪里:
activity1 ="行走",信心为75%
activity2 ="正在运行"5%的信心.
简而言之,swingOrRunning(probableActivities)方法的执行如下:
1)在for循环的第一次迭代之后,myActivity ="walking"
2)在for循环的第二次迭代之后,myActivity ="running"
并且该方法将"running"作为活动类型重新运行,同时我们期望返回的活动是"行走".
总而言之,为了获得具有最高置信度的活动类型(步行/跑步),我将walkingOrRunning()方法修改为以下
[fyi:我已经实现并测试了代码,它按预期工作,我欢迎任何反馈/评论/问题].
private DetectedActivity walkingOrRunning(List<DetectedActivity> probableActivities) {
DetectedActivity myActivity = null;
int confidence = 0;
for (DetectedActivity activity : probableActivities) {
if (activity.getType() != DetectedActivity.RUNNING && activity.getType() != DetectedActivity.WALKING)
continue;
if (activity.getConfidence() >= confidence) {
confidence = activity.getConfidence();
myActivity = activity;
}
}
return myActivity;
}
Run Code Online (Sandbox Code Playgroud)
我观察到类似的行为。我的理论是,当您收到一个ActivityRecognitionResult对象时,它通常会包含几个可解析的DetectedActivity对象,每个对象都有一个由整数指定的置信度分数。在 的情况下WALKING,将至少有两个DetectedActivity对象 - 一个DetectedActivity对象具有ON_FOOT较高的置信水平,另一个DetectedActivity对象具有WALKING较低或相同的置信水平。
ON_FOOT在实践中,我想你经常会得到+ WALKING||的一些排列。RUNNING,或所有三个具有不同的置信度分数,并且ON_FOOT可能是最高的。
| 归档时间: |
|
| 查看次数: |
6715 次 |
| 最近记录: |