1.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/.java
1public void onSensorChanged(SensorEvent event) {
2 float[] values = event.values;
2.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/.java 1public void onSensorChanged(SensorEvent event) { 2 float[] values = event.values;。
3.Android重力感应实现方式是怎样实现的
ndroid中对于图形界面以及多媒体的相关操作比较容易实现。
而且对于大多数手机用户来说,他们主要也就是根据这些方面的功能来对系统那个进行修改。我们可以通过本文介绍的Android多媒体框架的源码解读,来具体分析一下这方面的基本知识。
Android多媒体框架的代码在以下目录中:external/opencore/。 这个目录是Android多媒体框架的根目录,其中包含的子目录如下所示: * android:这里面是一个上层的库,它基于PVPlayer和PVAuthor的SDK实现了一个为Android使用的Player和Author。
* baselibs:包含数据结构和线程安全等内容的底层库 * codecs_v2:这是一个内容较多的库,主要包含编解码的实现,以及一个OpenMAX的实现 * engines:包含PVPlayer和PVAuthor引擎的实现 * extern_libs_v2:包含了khronos的OpenMAX的头文件 * fileformats:文件格式的据具体解析(parser)类 * nodes:编解码和文件解析的各个node类。 * oscl:操作系统兼容库 * pvmi: 输入输出控制的抽象接口 * protocols:主要是与网络相关的RTSP、RTP、HTTP等协议的相关内容 * pvcommon:pvcommon库文件的Android。
mk文件,没有源文件。 * pvplayer:pvplayer库文件的Android。
mk文件,没有源文件。 * pvauthor:pvauthor库文件的Android。
mk文件,没有源文件。 * tools_v2:编译工具以及一些可注册的模块。
Splitter的定义与初始化 以wav的splitter为例,在fileformats目录下有解析wav文件格式的pvwavfileparser。 cpp文件,在nodes目录下有pvmf_wavffparser_factory。
cpp,pvmf_wavffparser_node。h, pvmf_wavffparser_port。
h等文件。 我们由底往上看,vwavfileparser。
cpp中的PV_Wav_Parser类有InitWavParser(),GetPCMData(),RetrieveFileInfo()等解析wav格式的成员函数,此类应该就是最终的解析类。我们搜索PV_Wav_Parser类被用到的地方可知,在PVMFWAVFFParserNode类中有PV_Wav_Parser的一个指针成员变量。
再搜索可知,PVMFWAVFFParserNode类是通过的()成员函数生成的。 而()函数是在PVPlayerNodeRegistry::PVPlayerNodeRegistry()类构造函数中通过PVPlayerNodeInfo类被注册到Oscl_Vector 的vector中,在这个构造函数中,AMR,mp3等node也是同样被注册的。
4.Android重力感应实现方式是怎样实现的
由于重力感应器在板上安装的方向不同,而移植时需要调整相关的代码.解决屏幕显示颠倒相关问题,相关的有两部分代码:1.内核重力感应器驱动部分,如 MMA76601vi 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#endif0910#ifdef CONFIG_REVERSE_X11 x = -x;12#endif1314#ifdef CONFIG_REVERSE_Y15 y = -y;16#endif17/* X Y 感应方向有问题,这很容易看出来.*/18#ifdef CONFIG_REVERSE_Z19 z = -z; /* 按正常情况下拿着设备,屏幕斜向上,如果不灵敏,把屏幕朝下试试,如果灵敏了,一般是 Z 反了.*/20#endif2.Android部分,如果出现菜单显示正常,但是玩重力感应游戏时有问题,这部分就要修改(2.1)1vim frameworks/base/core/java/android/view/.java1public void onSensorChanged(SensorEvent event) {2 float[] values = event.values;。
5.android 游戏开发 怎么使物体有重力
Android中的很多游戏的游戏都使用了重力感应的技术,但其api demo却并没有重力感应的实例,因为开发的需要,就研究了一下重力感应这方面,因为网上关于这方面的东西比较少,所以写出来跟大家交流一下,算是抛砖引玉吧。
1 以屏幕的左下方为原点(2d编程的时候,是以屏幕左上方为原点的,这个值得注意一下),箭头指向的方向为正。从-10到10,以浮点数为等级单位。
2 手机屏幕向上(z轴朝天)水平放置的时侯,(x,y,z)的值分别为(0,0,10); 3 手机屏幕向下(z轴朝地)水平放置的时侯,(x,y,z)的值分别为(0,0,-10); 4 手机屏幕向左侧放(x轴朝天)的时候,(x,y,z)的值分别为(10,0,0); 5 手机竖直(y轴朝天)向上的时候,(x,y,z)的值分别为(0,10,0); END 代码 Java代码 packagecom.ray.test; importAndroid.app.Activity; importAndroid.os.Bundle; importAndroid.hardware.SensorManager; importAndroid.hardware.Sensor; importAndroid.hardware.SensorEventListener; importAndroid.hardware.SensorEvent; { ; Sensorsensor=sensorMgr.getDefaultSensor (Sensor.TYPE_ACCELEROMETER); privatefloatx,y,z; protectedvoidonCreate(){ super.onCreate(savedInstanceState); sensorMgr=(SensorManager) getSystemService(SENSOR_SERVICE); =(){ (SensorEvente){ x=e.values[SensorManager.DATA_X]; y=e.values[SensorManager.DATA_Y]; z=e.values[SensorManager.DATA_Z]; setTitle("x="+(int)x+","+"y="+(int)y+","+"z="+(int)z); } (Sensors,intaccuracy){ } }; //注册listener,第三个参数是检测的精确度 sensorMgr.registerListener(lsn,sensor, SensorManager.SENSOR_DELAY_GAME); } }。
转载请注明出处众文网 » 毕业设计论文android开发重力感应(android怎么实现重力感应)