2015-05-13 61 views
3

我想找到最可靠的方式來識別用戶是否正在開車,步行,騎車或靜止。我將在Android應用程序中使用它。我寧願儘可能避免使用GPS。識別用戶正在開車,步行,騎自行車

請讓我知道什麼算法適合你,他們的優點和缺點。謝謝!

+0

我首先想到的將是速度閾值和設備爲每種運輸方法檢測到的一些「震動」數量。但您可能不得不使用GPS來識別用戶的速度。 –

回答

1

Google在Google Play服務中爲此提供了一個API。檢查出https://developer.android.com/reference/com/google/android/gms/location/ActivityRecognitionApi.html

我不會建議你自己編碼,它不容易(我有一個版本大約一年前谷歌做的,它是越野車和電池耗盡)。

+0

感謝您的回覆!我嘗試過,但準確度並​​不高。置信度度量通常太低而不能依賴。 –

+2

信心不足,因爲這不是一個簡單的問題。如果他們每小時行駛10英里是騎自行車,還是在停車場慢慢行駛?如果他們停下來30秒,他們是開着還是闖紅燈?大概60秒? 120?它的所有猜測工作真的。如果你問的是這裏而不是實現你自己的一個絕妙的想法,你真的認爲你會比他們的團隊做得更好,並花費了很多時間嗎? –

0

你可能永遠不會得到完全準確的結果,但可以使用

- GPS to identify speed 
- Is the charger plugged in 
- is the phone off, or on screensaver 
- is the movement detector going off a lot - likely walking but may be driving on dirt road 

我用一個簡單的版本打如下方式確定一個合理的估計(不好意思代碼是在Python)

def inspect_phone(self): 
    self.phone_gps_lat = 137.0000 # get from phone 
    self.phone_gps_lng = 100.0000 # get from phone 
    self.phone_moving = False  # get from phone 
    self.phone_move_dist_2_mn = 4 
    self.phone_on_charge = True 
    self.screen_saver = False 
    #------------------------------- 
    phone_status = '' 
    if self.phone_on_charge == True: 
     phone_status += 'Phone is charging' 
     if self.phone_moving == True: 
      phone_status += ', driving in Car' 
     else: 
      phone_status += ', sitting still' 
    else: 
     if self.screen_saver == False: 
      phone_status += 'Phone is being used' 
     else: 
      phone_status += 'Phone is off' 
     if self.phone_moving == True: 
      if self.phone_move_dist_2_mn < 5: 
       phone_status += ', going for Walk' 
      elif self.phone_move_dist_2_mn > 500: 
       phone_status += ', flying on Plane' 
      else:  
       phone_status += ', riding on ' + transport['Public'] 
    return phone_status