虫虫技术在线--技术决定出路

当前位置: 首页 > 系统 > 嵌入式系统 >

Android教程之实现动作感应技术

时间:2010-02-18 14:58来源:未知 作者:admin 点击:
今天有个公司说需要动作感应的几个小游戏!也接触android很久了,但是以前没有看过关于动作感应技术的教程,到google上也没搜索到类似教程!只有自己看API了,加上就其他平台的动作

  今天有个公司说需要动作感应的几个小游戏!也接触android很久了,但是以前没有看过关于动作感应技术的教程,到google上也没搜索到类似教程!只有自己看API了,加上就其他平台的动作感应试试吧!就在这里记录下收获吧!

  1.发现Android提供了SensorListener接口

  2.要使用还得有个动作感应管理器SensorManager

  Java代码

  1. //取得SensorManager   
  2. SensorManager sensorMgr = (SensorManager)getSystemService(SENSOR_SERVICE); 
 

  3.注册我们获得的SensorManager

  Java代码

  1. //返回true表示注册成功,flase则反之   
  2. sensorMgr.registerListene(this,SensorManager.SENSOR_ACCELEROMETER,SensorManager.SENSOR_DELAY_GAME);  

  如果注册SensorManager不成功就调用

  Java代码

  1.   sensorMgr.unregisterListener(this,SensorManager.SENSOR_ACCELEROMETER);  
  2.  

  4.SensorListener必须实现两个方法

  Java代码

  1. public void onAccuracyChanged(int arg0, int arg1) {}   
  2. public void onSensorChanged(int sensor, float[] values) {}   
  3.  

  5.自己定义一个3D的坐标

  Java代码

  1. class Pos3D   
  2. {   
  3.     float x;   
  4.     float y;   
  5.     float z;   
  6. }   
  7. Pos3D cur,last;   
  8.  

  在方法中这样课可以获得数据

  Java代码

  1. cur.x = values[SensorManager.DATA_X];   
  2. cur.y = values[SensorManager.DATA_Y];   
  3. cur.z = values[SensorManager.DATA_Z];   
  4. float speed = Math.abs((cur.x+cur.y+cur.z)-(last.x+last.y+last.z))/ 间隔的时间 

  下面就是判断这个speed大于自己定义的一个数值时,进行处理

  Java代码

  1. if(speed > 1000)   
  2. {   
  3.     //这里来进行处理   
  4. }  
  5.  

  就这样最基本的实现了动作感应,,但是大家肯定能感觉得到这个方法的不足之处,

  我也还在研究更好的方法,希望一起讨论

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容