首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

SensorEventListener 接口 撼一摇

2013-02-24 
SensorEventListener 接口 摇一摇public classtest extends Activity implements OnClickListener, Sensor

SensorEventListener 接口 摇一摇
public class test extends Activity implements OnClickListener, SensorEventListener {private SensorManager mSensorManager; @Overrideprotected void onCreate(Bundle savedInstanceState) {//..............} } @Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}private float[] temp;@Overridepublic void onSensorChanged(SensorEvent event) {if(PublicUtil.isWallPaperLocked(this))return; //屏幕如果锁定if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {if (temp!=null&&isShake(event.values)) {if (!isShaking) {isShaking = true;Timer timer = new Timer();TimerTask task = new TimerTask() {@Overridepublic void run() {// TODO Auto-generated method stubgetData();}};timer.schedule(task, 1000);//延迟一秒执行}}temp = event.values.clone();//克隆传感器里的values的值}}boolean isShake(float[] values){boolean flag = false;for (int i = 0; i < values.length; i++) {if(temp[i]-values[i]>15){ //如果摇动的力度大于15 就执行摇一摇System.out.println("temp="+temp[i]+"value="+values[i]);flag = true;break;}}return flag;} @Overrideprotected void onResume() {super.onResume();StatService.onResume(this);// 加速度传感器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),// 还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等,// 根据不同应用,需要的反应速率不同,具体根据实际情况设定SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();StatService.onPause(this);mSensorManager.unregisterListener(this);}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();// this.unRegisterLocationListener();mSensorManager.unregisterListener(this);}

?

从这个示例,我们可以基本总结出使用Android传感器的步骤,注册一个SensorEventListener,然后在onSensorChanged方法中处理传感器的数据。

这里需要注意的一点是,我把注册Sensor这个过程放在了onResume()方法中,而取消注册放在了onPause()方法中,这主要是因为,传感器的使用太耗电了,而且一定需要手动取消注册,否则即使Activity不可见,传感器依然在工作中,几个小时内就会耗光电量。

更多传感器的知识参考

http://aliusa.iteye.com/blog/1064560? ??

热点排行