Tôi đang cố gắng sử dụng tính năng nhận dạng hoạt động trong một dự án để phát hiện khi nào người dùng là "TRONG XE" (Lái xe) Vấn đề là hầu như không thể sử dụng nó, vì hầu hếtProbableActivity thường báo cáo "IN-VEHICLE" mặc dù tôi đã ngồi ở bàn làm việc của tôi trong một thời gian dài hoặc chỉ đi dạo quanh nhà tôi. Sẽ rất tuyệt khi biết cách API kết luận điều này.API nhận dạng hoạt động không đáng tin cậy?
Tôi nghĩ tính năng này có tiềm năng lớn, nhưng hiện tại có điều gì đó rõ ràng là không hoạt động.
Đây là nhật ký của MostProbableActivity được thực hiện sau mỗi 30 giây để hiển thị ý tôi. Ngồi ở bàn làm việc của tôi, sau 4 phút tôi bật điện thoại một vài lần, và kết quả này là kết quả "có thể xảy ra nhất trong XE".
Tôi đã thử các điện thoại khác nhau và kết quả giống nhau. Vì vậy, tôi không nghĩ rằng nó liên quan đến phần cứng.
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]
Đây là mã, không có gì đặc biệt có:
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));
}
}
Từ liên kết này:
tôi có thể thấy rằng những người khác có kinh nghiệm tương tự, nhưng một số tuyên bố rằng nó hoạt động OK.
Tôi nghĩ đây là lỗi trong thuật toán tự tin của API. Nó sẽ dễ dàng kết luận rằng điện thoại không di chuyển theo bất kỳ hướng nào, cũng không phải trên một con đường vì vậy rõ ràng là KHÔNG "khó khăn nhất" trong một chiếc XE.
Có ai có thể xác nhận vấn đề này hoặc tôi sử dụng sai cách không?
Trân trọng
Thomas
Bạn đang sử dụng đúng cách. Vấn đề là nếu không lấy mẫu gps và tháo pin thì sẽ rất khó phát hiện hoạt động lái xe. Google có thể theo dõi các dữ liệu cảm biến (gia tốc kế, con quay hồi chuyển, từ kế, vv ..) trong một vài giai đoạn và tìm kiếm một mô hình lái xe (rất giống với vẫn còn nhưng có rung động độc đáo). Đôi khi thuật toán không đủ chính xác. – MikeL