簡體   English   中英

誰了解Windows Phone上的設備方向?

[英]Who understands device orientation on Windows Phone?

設備定向事件的w3c標准:

http://w3c.github.io/deviceorientation/spec-source-orientation.html#deviceorientation

W3C標准描述了當設備繞其z軸旋轉時,此事件的alpha屬性應如何更改。

當您將手機直望屏幕時,z軸指向您。 它是與屏幕重合的平面的法線向量。

在我看來,Windows Phone上的工作略有不同(令人討厭)。 alpha屬性也隨着繞x軸旋轉而改變(即,在縱向模式下)。

如何重復:

  1. 在您面前握住手機(在縱向模式下)。
  2. 確保伽瑪為負,這意味着手機會稍微向后傾斜。
  3. 現在確保Alpha約為。 零度表示手機在y軸上居中。
  4. 將手機稍微向左傾斜,使alpha大約30度,同時確保gamma保持負值。
  5. 現在,將手機略微對准您,使伽瑪值為正

請注意,當伽瑪值變為正數時,alpha值如何躍升180度。 W3C標准中沒有對此進行描述,還是我錯過了一些事情?

-

當您進入橫向模式時,另一件奇怪的事情發生了。 在橫向模式下將手機繞其Z軸傾斜時,alpha屬性沒有改變,但是beta屬性似乎改變了嗎? 要在橫向模式下更改alpha屬性,您必須繞着手機的(原始)x軸旋轉,例如,這意味着要旋轉手機的頂部(現在位於左側)。橫向模式)。

-

我目前沒有可使用的android或iOS設備,但是至少Chrome桌面瀏覽器中的模擬器的行為完全不同(而且似乎與W3C標准一致)。

-

我在這里放一個簡單的測試腳本:

http://locaboa.com/wpdotest.html

(在智能手機上打開)

-

我在做錯什么/缺少什么嗎?

有什么想法可以解決這個問題嗎?

=======================

編輯:剛剛在iPhone上進行了測試,似乎行為與Windows Phone相同...

答:他們又做了一次。

既然大多數CSS和JS已經標准化了polyfill,大型瀏覽器和OS供應商已經決定采用不同的方式來處理設備定向數據並將其傳遞給Web開發人員。 另外,該標准也不是氣密的。

我找到了這個:

https://github.com/ajfisher/deviceapi-normaliser

這是不同供應商的應用程序之間差異的非常有用的總和,但(不幸的)不是有效的polyfill。 對於我的項目,我正在慢慢填補空白,並期望在幾個月內達到完全填充。 同時,這里有一個腳本將WP IE坐標轉換為有效的偏航/俯仰/橫滾坐標集。

// [[PITCH]]

    if ( event.gamma < 0 ) {

        normalized.pitch = -90 - event.gamma ;

    } else {

        normalized.pitch = 90 - event.gamma ;

    }

// [[偏航]]

    if ( normalized.pitch > 0 && event.alpha > 180 ) {

        normalized.yaw = event.alpha - 180 ;

    } else if ( normalized.pitch > 0 && event.alpha < 180 ) {

        normalized.yaw = event.alpha + 180;

    }

// [[ROLL]]

    if ( normalized.pitch > 0 ) {

        var sign = Math.abs( event.beta ) / event.beta;

        normalized.roll = sign * 180 - event.beta ;

    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM