emil10001提供的walkingOrRunning()方法有效,但是它不能获得置信度最高的活动(跑步或步行),这是因为他的for循环中第二个if子句的条件总是将活动的置信度与0进行比较。
为了澄清这一点,让我们假设我们将大小为2的"probableActivities"列表作为参数传递给walkingOrRunning()方法,即我们调用walkingOrRunning(probableActivities)。
假设,
List probableActivities = [activity1, activity2],
其中:
activity1 = "walking",置信度为75%
activity2 = "running",置信度为5%。
简而言之,walkingOrRunning(probableActivities)方法的执行如下:
1)在for循环的第一次迭代后,myActivity = "walking"
2)在for循环的第二次迭代后,myActivity = "running"
而该方法返回"running"作为活动类型,而我们期望返回的活动类型是"walking"。
总之,为了获得最高置信度的活动类型(步行/跑步),我将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;
}