2013-10-28 59 views
1

當我在JavaScript中觸發'devicemotion'事件時,我無法完全理解從移動設備獲取的信息。我認爲我會回來的東西與我所看到的不符,甚至我所看到的似乎也不一致。瞭解從JS中的event.acceleration接收到的設備運動數據

所以我明白devicemotion事件有一個X,Y和Z組件,它記錄沿着手機軸的移動。我的假設是,這些數字是設備向一個方向移動的寄存器,較大的移動會給予更大的數字。例如,如果相機向左移動,我會得到一個負X值,而右邊會給我一個正值。

這很快就變得明顯,這是不正確的。我現在假設(從我有控制檯記錄的數字),這個事件只測量軸上速度的變化。所以不知道左右移動,我只知道該設備沿着x軸移動,並且自上一次均勻觸發以來,速度已經由返回的數量改變。所以我看到的正面和負面事實上都與速度的正面或負面變化有關。

這是一個正確的理解?如果是這樣,這是否意味着無法收集方向信息,過去只知道變化發生在一個或另一個軸上?

謝謝。

回答

2

DeviceMotionEvent返回(除其他之外)以m/s^2爲單位的加速度。如果你加速朝一個方向移動,它會返回一個正值。如果以相同方向以恆定速度移動,則加速度將返回0(請注意,由於加速度計的靈敏度,這實際上是不可能的,因此您將始終看到0左右的值,而不是0)。如果你在同一個方向上放慢速度,但仍然在移動,則會從加速度中恢復負值。爲了使事情更加複雜,如果朝相反的方向移動,如果加速並減速,則會返回負值。這使您可以區分是向上移動設備(=沿Y軸的正向加速度)還是向下(=沿Y軸的負向加速度)和向右(=正向加速度,沿着X軸)或向左移動=沿着X軸的負加速度)。

如果您想知道設備在哪個方向移動,您必須在一段時間內捕獲所有加速度測量值並計算出該方向,例如,如果Y加速度開始爲正值,則設備必須向上移動,直到沿Y檢測到一個完全抵消初始加速度的負加速度。

相關問題