重力传感器的使用

创建一个传感器管理器和一个传感器监听器。管理器用来管理传感器以及创建各种各样的传感器,监听器用来监视传感器的变化并且进行相应的操作
1.在创建的xxxActively.java下首先声明以下内容
SensorManager sensormanager = null; Sensor sensor = null; SensorEventListener sel; private float x_G; private float y_G; private float z_G;
2.接着在onCreate方法中添加以下代码
//手机中的所有传感器都需要通过SensorManger来访问,调用getSystemService(SENSOR_SERVICE)方法可以拿到当前手机的传感器管理对象 sensormanager = (SensorManager)getSystemService(SENSOR_SERVICE); //实现SensorEventListener接口 sel = new SensorEventListener(){ @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {} @Override public void onSensorChanged(SensorEvent event) { //重力感应主要是靠手机的加速度传感器(accelerometer)来实现 if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){//这里我们得到的是x,y,z方向上的重力加速度的值,也可以将其在屏幕上显示出来 x_G = event.values[SensorManager.DATA_X]; y_G = event.values[SensorManager.DATA_Y]; z_G = event.values[SensorManager.DATA_Z]; //textview.setText(x_G +" "+y_G+" "+z_G); } } };
3.重写Activity的onResume()方法,在方法体创建重力传感器,并向系统注册监听器。
代码如下:
public void onResume(){ sensor = sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//这里所使用的传感器类型是加速度传感器 //注册listener,第三个参数是检测的精确度 sensormanager.registerListener(sel, sensor,sensormanager.SENSOR_DELAY_GAME); super.onResume();	}
4.最后重写Activity的onPause()方法,在其中注销所有传感器的监听,释放重力传感器的资源,注意传感器十分耗电,不用时一定要释放。代码如下:
public void onPause(){	//注销所有传感器的监听	sensormanager.unregisterListener(sel);	super.onPause();	}