2014-10-28 83 views
0

我非常有興趣瞭解Google Play服務如何識別您的駕駛狀態。 從我所知道的即使我禁用所有位置提供商並停止位置跟蹤活動識別服務仍然能夠識別出我處於駕駛狀態。Google Play服務如何識別駕駛?

我使用的是Nexus 3,從我瞭解的Jelly Bean版本以及僅支持它的設備上,Google正在使用稱爲硬件地理圍欄的東西。有人能指引我正確的方向或解釋我是如何做到的。

謝謝!

回答

0

Google Play Services提供了一些您可以使用的功能。

ActivityRecognitionResultDetectedActivityActivityRecognitionClient

用途許可:com.google.android.gms.permission.ACTIVITY_RECOGNITION

有一個廣播接收器,監控你的活動。當您檢查接收器的當前狀態:

//Returns enum value, one of: IN_VEHICLE, ON_BICYCLE, ON_FOOT, STILL, UNKNOWN... 
DetectedActivity activity = activityRecognitionResult.getMostProbableActivity(); 

//Returns the confidence level that the activity.getType() is accurate 
int confidence = activity.getConfidence(); 

//TODO -- Determine if the confidence meets or exceeds a threshold for taking action 

更新

見谷歌的文檔,這裏進行了高層次的解釋:

https://developer.android.com/reference/com/google/android/gms/location/ActivityRecognitionClient.html

The activities are detected by periodically waking up the device and reading short bursts of sensor data. It only makes use of low power sensors in order to keep the power usage to a minimum.

只是猜測在這裏,但我猜測有一個人用於分析每種類型的活動。例如,口袋裏的手機在行走時(低頻率,高衝擊力)與騎自行車(高頻率,低衝擊,高度變化)差別很大。

如果GPS速度的算法因素,那麼當然你不是在80英里每小時行走。如果您正在開車,手機可能會產生很少的「搖動」/陀螺儀運動,但可能會出現較高的G力(加速度計)。

我猜測這些算法不是開源的,因爲它們似乎給了Google一個很好的競爭優勢。

+0

謝謝,但我的問題是,你知道他們的活動識別(特別是駕駛)背後的算法是什麼,而不是如何使用Google Play服務。 – MikeL 2014-10-28 21:53:21

+0

我懷疑akodiakson在你的評論後在他的更新中加入了這個 - 但是「這些算法不是開源的」是正確的。使用Google Play服務的所有內容都是「Google體驗」的一部分,不屬於開源Android代碼。 – deive 2014-11-13 09:57:36