重力感應(yīng)是指現(xiàn)在手機(jī)中常用的一個(gè)器件,及加速度傳感器。
成都創(chuàng)新互聯(lián)專(zhuān)注于吳中網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供吳中營(yíng)銷(xiāo)型網(wǎng)站建設(shè),吳中網(wǎng)站制作、吳中網(wǎng)頁(yè)設(shè)計(jì)、吳中網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造吳中網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供吳中網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
當(dāng)手機(jī)靜止時(shí),加速度就是重力,所以一般也叫做重力傳感器。
這個(gè)硬件可以感應(yīng)加速度的變化,轉(zhuǎn)化為數(shù)據(jù)提供給系統(tǒng)。
系統(tǒng)可以根據(jù)這些數(shù)據(jù)做一些事情。
最基本的應(yīng)用就是根據(jù)重力旋轉(zhuǎn)屏幕。
當(dāng)然,這個(gè)東西屬于錦上添花的玩意,沒(méi)有它還是一個(gè)完整的系統(tǒng)。
你好,屏幕轉(zhuǎn)屏和重力感應(yīng)是沒(méi)有牽連的,重力感應(yīng)也不能設(shè)置,只能設(shè)置距離感應(yīng),距離感應(yīng)就是你打電話(huà)時(shí)手機(jī)屏幕會(huì)自動(dòng)黑掉,等你打完了,從耳朵邊拿開(kāi)的時(shí)候手機(jī)屏幕會(huì)自動(dòng)亮起來(lái),這個(gè)就是距離感應(yīng),你要設(shè)置轉(zhuǎn)屏,設(shè)置—顯示—屏幕自動(dòng)旋轉(zhuǎn),去掉勾就可以了,如果手機(jī)游戲沒(méi)有重力感應(yīng)了,可能是那款游戲不支持,可以下載雷霆賽車(chē)來(lái)試試,如果還是不能使用重力感應(yīng),那就說(shuō)明你手機(jī)壞了。
擴(kuò)展資料:
通過(guò)對(duì)力敏感的傳感器,感受手機(jī)在變換姿勢(shì)時(shí),重心的變化,使手機(jī)光標(biāo)變化位置從而實(shí)現(xiàn)選擇的功能。
手機(jī)重力感應(yīng)技術(shù):利用壓電效應(yīng)實(shí)現(xiàn),簡(jiǎn)單來(lái)說(shuō)是是測(cè)量?jī)?nèi)部一片重物(重物和壓電片做成一體)重力正交兩個(gè)方向(x軸與y軸)的分力大小,來(lái)判定水平方向。
手機(jī)重力感應(yīng)指的是手機(jī)內(nèi)置重力搖桿芯片,支持搖晃切換所需的界面和功能,甩歌甩屏,翻轉(zhuǎn)靜音,甩動(dòng)切換視頻等,是一種非常具有使用樂(lè)趣的功能。
傳感器是一種能把物理量或化學(xué)量轉(zhuǎn)變成便于利用的電信號(hào)的器件。國(guó)際電工委員會(huì)(IEC:International Electrotechnical Committee)的定義為:“傳感器是測(cè)量系統(tǒng)中的一種前置部件,它將輸入變量轉(zhuǎn)換成可供測(cè)量的信號(hào)”。按照Gopel等的說(shuō)法是:“傳感器是包括承載體和電路連接的敏感元件”,而“傳感器系統(tǒng)則是組合有某種信息處理(模擬或數(shù)字)能力的系統(tǒng)”。傳感器是傳感系統(tǒng)的一個(gè)組成部分,它是被測(cè)量信號(hào)輸入的第一道關(guān)口。 傳感器把某種形式的能量轉(zhuǎn)換成另一種形式的能量。
ndroid中檢測(cè)重力感應(yīng)變化大致需要下面幾個(gè)步驟:
1) 得到傳感器服務(wù) getSystemService(SENSOR_SERVICE);
得到一個(gè)SensorManager,用來(lái)管理分配調(diào)度處理Sensor的工作,注意它并不服務(wù)運(yùn)行于后臺(tái),真正屬于Sensor的系統(tǒng)服務(wù)是SensorService,終端下#service list可以看到sensorservice: [android.gui.SensorServer]。
2) 得到傳感器類(lèi)型 getDefaultSensor(Sensor.TYPE_GRAVITY);
當(dāng)然還有各種千奇百怪的傳感器,可以查閱Android官網(wǎng)API或者源碼Sensor.java。
3) 注冊(cè)監(jiān)聽(tīng)器 SensorEventListener
應(yīng)用程序打開(kāi)一個(gè)監(jiān)聽(tīng)接口,專(zhuān)門(mén)處理傳感器的數(shù)據(jù),這個(gè)監(jiān)聽(tīng)機(jī)制比較重要,被系統(tǒng)廣泛使用。
4) 實(shí)現(xiàn)監(jiān)聽(tīng)器的回調(diào)函數(shù) onSensorChanged, onAccuracyChanged
由于重力感應(yīng)器在板上安裝的方向不同,而移植時(shí)需要調(diào)整相關(guān)的代碼.
解決屏幕顯示顛倒相關(guān)問(wèn)題,相關(guān)的有兩部分代碼:
1.內(nèi)核重力感應(yīng)器驅(qū)動(dòng)部分,如 MMA7660
1vi drivers/input/gsensor/mma7660.c
在這個(gè)文件中尋找相似以下的代碼
1axis.y = mma7660_convert_to_int(buffer[MMA7660_REG_X_OUT]);
2axis.x = mma7660_convert_to_int(buffer[MMA7660_REG_Y_OUT]);
3axis.z = mma7660_convert_to_int(buffer[MMA7660_REG_Z_OUT]);
然后按照你自己板的需要,將 X,Y 進(jìn)行交換,進(jìn)行相反數(shù)運(yùn)算,將 Z 進(jìn)行相反運(yùn)算.
其實(shí)可以做得更方便一些,把這幾個(gè)操作寫(xiě)到 Kconfig 里面,通過(guò)宏來(lái)控制這些運(yùn)算,就不用再改代碼了.
01#ifdef CONFIG_SWAP_XY02{
03 typeof(x) __tmp;
04 __tmp = x;05 x = y;
06 y = __tmp;07}08#endif09
10#ifdef CONFIG_REVERSE_X11 x = -x;12#endif13
14#ifdef CONFIG_REVERSE_Y15 y = -y;16#endif
17/* X Y 感應(yīng)方向有問(wèn)題,這很容易看出來(lái).*/
18#ifdef CONFIG_REVERSE_Z
19 z = -z; /* 按正常情況下拿著設(shè)備,屏幕斜向上,如果不靈敏,把屏幕朝下試試,如果靈敏了,一般是 Z 反了.*/20#endif
2.Android部分,如果出現(xiàn)菜單顯示正常,但是玩重力感應(yīng)游戲時(shí)有問(wèn)題,這部分就要修改(2.1)
1vim frameworks/base/core/java/android/view/WindowOrientationListener.java
1public void onSensorChanged(SensorEvent event) {
2 float[] values = event.values;