我的位置: 首頁 > 學習專區 > 安卓技術 > android屏幕重力感應如何實現

android屏幕重力感應如何實現

2012-02-03 11:11:00
來源:
[導讀] 由于重力感應器在板上安裝的方向不同,而移植時需要調整相關的代碼。解決屏幕顯示顛倒相關問題,相關的有兩部分代碼:1 內核重力感應器驅
由于重力感應器在板上安裝的方向不同,而移植時需要調整相關的代碼。

解決屏幕顯示顛倒相關問題,相關的有兩部分代碼:

1. 內核重力感應器驅動部分,如 MMA7660

1vi drivers/input/gsensor/mma7660.c

在這個文件中尋找相似以下的代碼

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 進行交換,進行相反數運算,將 Z 進行相反運算。

其實可以做得更方便一些,把這幾個操作寫到 Kconfig 里面,通過宏來控制這些運算,就不用再改代碼了。

01#ifdef CONFIG_SWAP_XY

02{

03 typeof(x) __tmp;

04 __tmp = x;

05 x = y;

06 y = __tmp;

07}

08#endif

09

10#ifdef CONFIG_REVERSE_X

11 x = -x;

12#endif

13

14#ifdef CONFIG_REVERSE_Y

15 y = -y;

16#endif

17/* X Y 感應方向有問題,這很容易看出來。 */

18#ifdef CONFIG_REVERSE_Z

19 z = -z; /* 按正常情況下拿著設備,屏幕斜向上,如果不靈敏,把屏幕朝下試試,如果靈敏了,一般是 Z 反了。 */

20#endif

2. Android部分,如果出現菜單顯示正常,但是玩重力感應游戲時有問題,這部分就要修改(2.1)

1vim frameworks/base/core/java/android/view/WindowOrientationListener.java

1public void onSensorChanged(SensorEvent event) {

2 float[] values = event.values;

3 float X = values[_DATA_X];

4 float Y = values[_DATA_Y];

5 float Z = values[_DATA_Z];

6 float OneEightyOverPi = 57.29577957855f;

7 float gravity = (float) Math.sqrt(X*X+Y*Y+Z*Z);

評論
熱點專題
>>
相關文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲日韩国产欧美性 | 久久综合色_综合色88 | 亚洲国产AV一区二区三区四区 | 日韩欧美国产手机在线观看 | 中国一级特黄精品在线播放 | 亚洲少妇一二三区视频 |