手機之所以可以感知方向改變並旋轉螢幕顯示是因為手機內部內建有加速度計。首先我們先了解一些關於加速度計的相關知識。它由兩個基礎部分組成,一個與要測量加速度的物體連線的一塊殼體,以及一個與殼體相連仍可以自由移動的質量塊,如圖中就是一條彈簧連線著一個金屬球。
當我們把殼體向上移動時,金屬球就會因為慣性向下拉彈簧,這時我們只需要測量出彈簧的拉伸量,就可以由此計算出重力。由此,三個這樣的加速度計就可以測量出一個物體在三維方向中的運動方向。
當Z軸上的加速度計與重力方向垂直的時候,只有X軸上的小球拉伸彈簧產生拉伸量。當發生翻轉時,這時Z軸指向上方,這時只有沿著Z軸的加速度計的彈簧被拉伸。
那麼這個加速度計晶片是如何工作的呢?下圖為早期iPhone手機中的感應裝置,內部有一個加速度計晶片裝置。那麼手機中的晶片是如何檢測到這樣的重力變化的呢?雖然它要比上述例子中的小球與彈簧的模型複雜得多。但是它們的組成部分依然是相同的。
晶片內設定了用矽製作的微小加速度計,包含一個固定在手機上的殼體和一個形狀像我們平時使用的梳子,可以前後移動的元件,它的作用類似於金屬球產生的慣性質量,在這裡,彈簧就變成了與殼體相連的可以靈活移動的矽片,顯然,若我們能測量出中間元件的位移量,就可以獲得運動的方向了。
透過加速度計上的三個指標來解釋其工作原理,這三個指標構成一個差分電容,意味著只要中間指標移動就可以產生電流。在當初設計中,將電流與加速度關聯在一起。
對於大部分手機來說,當手機處於預設的豎螢幕方向時,會相對於手機螢幕來定義一個三維座標系,如下圖所示,其中,與手機螢幕在一個平面內的X、Y軸中,X軸為水平向右為正,Y軸為垂直向上為正,Z軸為垂直於螢幕向外為正。在此座標系中,屏幕後面的座標將具有負Z值。
手機能感應到螢幕重力加速度感應可以想象成一個小球位於此座標系中,三個方向上的加速度。永遠以手機螢幕為準,不以外界為準作圖。
注:關於此座標系,特別需要注意的一點就是感測器的座標系不會隨著裝置的移動而改變。
當手機屏如上圖所示水平放置時,手機內加速度計的座標(x,y,z)=(0,0,-9.8),當手機頂部抬起時:y減小,且為負值;當手機底部抬起時:y增加,且為正值;當手機右側抬起時:x減小,且為負值;當手機左側抬起時:x增加,且為正值;手機螢幕向上水平放置時,z=-9.81;手機螢幕豎直放置時,z=0;手機螢幕向下水平放置時,z=9.81。
因此在系統中設定好手機屏發生切換的座標閾值,當你在使用手機的時候,y座標值達到閾值時,就會發生豎向切換,同理當x值達到閾值時候,手機就會發生橫向切換。
這下你知道了你的手機螢幕為什麼可以旋轉了嗎?歡迎大家點贊關注!