我正在尝试在项目中使用活动识别来检测用户何时处于“IN-VEHICLE”状态(驾车)。问题是很难使用它,因为mostProbableActivity经常报告“IN-VEHICLE”,即使我已经在桌子前坐了很长时间或者只是在房子里走来走去。希望知道API是如何得出这个结论的。
这是代码,没有什么特别的地方:
我认为这个功能有巨大的潜力,但现在显然存在问题。
这是每30秒记录一次MostProbableActivity的日志,以说明我的意思。我坐在桌子前,在4分钟后转动了几次手机,这导致了一个“mostProbable IN-VEHICLE”的结果。
我尝试过不同的手机,结果是相同的。所以我不认为这与硬件有关。
DetectedActivity [type=STILL, confidence=43]
DetectedActivity [type=STILL, confidence=54]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=69]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=92]
DetectedActivity [type=TILTING, confidence=100]
DetectedActivity [type=IN_VEHICLE, confidence=49]
DetectedActivity [type=TILTING, confidence=100]
DetectedActivity [type=STILL, confidence=51]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=85]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=66]
DetectedActivity [type=STILL, confidence=100]
这是代码,没有什么特别的地方:
public class ActivitiesIntentService extends IntentService {
private static final String TAG = "ActivitiesIntentService";
public ActivitiesIntentService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
Intent i = new Intent(Constants.STRING_ACTION);
DetectedActivity mostProbableActivity = result.getMostProbableActivity();
i.putExtra("MOST_PROBABLE_ACTIVITY",mostProbableActivity);
LocalBroadcastManager.getInstance(this).sendBroadcast(i);
Log.e(TAG, String.valueOf(mostProbableActivity));
}
}
从这个链接中:
我可以看到其他人有类似的经验,但是有些人声称它工作正常。
我认为这是API置信度算法中的一个错误。很容易得出结论,手机没有朝任何方向移动,也不在道路上,因此显然不是“mostProbable”在车辆中。
有人能够确认这个问题吗,还是我使用方法不对?
最好的问候
托马斯