android屏幕重力感应如何实现

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/11 13:24:51
android屏幕重力感应如何实现
xUkOG+#!Um$2EBUMJmcExZcAv1~_KME,ssdp|,P3. F2E;j׿rH685yVm [*p 4o'qh]_E;Fe6fQ.|Њ*'h>*6+~zi%U[q~`cn0בժQCeqP"+J54QFxhzb|Nc"")bDPB(WRHB-Z8ү=[sCgm!eK~(3C5%1qD򄹰̉RxpajY|ݳ!E"ZoE0OmliSxUѓo_M";iʠFx/лE lUqS|zwG[yG/PXS#RCL"iJVL^dU %Q!]%`$3F1bGz7y\~s(un *^$vk(ŻT0J2̷_}{2x/Q*Q^ 0:8.~CO佣.0[]l0\{/g?gܜᰨF.F8FiĝGxcV5cFP; < hЁ%ԛ0u;)T/6J چY{=`l 0 RUGd2vW+zULoJֺH#_LQ?B)I~V B\ qS/ N{_N4q>a mŦK([6V^%{ӿ>0i"'K3QB$2['6tC,+|@XCEY؟.U(E0e L, ,, B,Y$!@0@O,@_^BD dG$ Ҕ b9D

android屏幕重力感应如何实现
android屏幕重力感应如何实现

android屏幕重力感应如何实现
由于重力感应器在板上安装的方向不同,而移植时需要调整相关的代码.
解决屏幕显示颠倒相关问题,相关的有两部分代码:
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_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 感应方向有问题,这很容易看出来.*/
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;