我搜索一種方式來檢測手機的移動,而不管用戶拿着手機的方式。無論設備旋轉如何,檢測移動
一些例子:
- 我感興趣的垂直運動(如使用者將手機上)「忽略」如果手機奠定了桌子上或握在手中(也許倒) 。
- 也對水平移動感興趣(如用戶將手機推離身體)也「忽略」用戶如何握住手機。
背景是,我想識別用戶是否將電話拉出口袋(如拉30-40釐米,也有一些釐米水平)。
我想爲此我必須得到userAcceleration和態度的組合。但我沒有找到正確的數學......
我搜索一種方式來檢測手機的移動,而不管用戶拿着手機的方式。無論設備旋轉如何,檢測移動
一些例子:
背景是,我想識別用戶是否將電話拉出口袋(如拉30-40釐米,也有一些釐米水平)。
我想爲此我必須得到userAcceleration和態度的組合。但我沒有找到正確的數學......
如果您的應用程序處於前臺,您可能可以做到這一點。您可以使用UIDeviceOrientationLandscapeLeft
和UIDeviceOrientationLandscapeRight
和UIDeviceOrientationPortraitUpsideDown/UIDeviceOrientationPortrait
來檢測手機認爲它處於哪個風景,並從那裏調整您如何計算移動。
手機拿起時可能會發生移位。加速度計的這種變化可能會讓你看到手機如何移動。這需要大量的測試。我會設置您的練習應用程序,並獲取屏幕方向更改的大量數據,以及加速度計如何隨每次更改而變化並查找趨勢。
不確定你的意思是「正確的數學」。但我會讀出加速度計並總結所有3個方向(x/y/z)的絕對值。這會爲您提供一個單獨的加速數字,與手機方向或移動方向無關。
甚至更好的是計算RMS加速度,即求和x/y/z加速度的平方並計算總和的平方根。
這種方法的明顯缺點是它沒有提供關於運動方向的信息。您可以添加一些閾值或濾波來區分單個線性運動與搖動(例如,通過測量兩次加速事件之間的時間)。
此外,您可以確定高度的變化(這與手機方向無關),但我懷疑是否可以精確測量30 ... 40釐米的差異。
你想檢測搖動嗎? – Vidhi 2014-09-12 10:30:08
不可以。我想要檢測「空間」中的移動,例如將手機拉到或前面幾釐米,而不管用戶拿着手機的方式。 – Thorsten 2014-09-12 10:53:03
「我認爲我必須從用戶加速和態度中得到一個組合,但我沒有找到正確的數學。」你能澄清這個說法嗎? (即告訴我們你已經嘗試了什麼) – 2016-05-17 01:53:28