步骤:
1:创建SensorManager
(传感器管理器)的实例sensorManager
,通过getSystemService()
函数初始化该实例
private SensorManager sensorManager;
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
2:
sensorManager
调用
getDefaultSensor()
函数来确定传感器类型,将返回值给sensor,它代表我们所选择的传感器
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
3 :
sensorManager
注册一个监听器,参数如下:
listener
是
SensorEventListener
的实例,
sensor是 Sensor
的实例,还需要用管理器调用传感器更新速率
sensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_NORMAL);
4:当然我们需要创建监听器
listener
才能完成注册,
SensorEventListener
是一个接口,它自带了两个方法
SensorEventListener listener=new SensorEventListener()
{
public void onSensorChanged(SensorEvent event){ }//传感器数值变化时调用
public void onAccuracyChanged(Sensor sensor, int accuracy) { }//传感器精度变化时调用
}
数值变化时我们要用到SensorEvent
类型参数event
,这其中包含了一个values[]
数组,传感器输出的数据都在里面
5:程序退出或传感器使用完毕后要释放掉资源:
sensorManager.unregisterListener(listener);
例子:加速度传感器(摇一摇):
public class MainActivity extends ActionBarActivity {
private SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
//传感器类型
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
//注册传感器监听
sensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(sensorManager!=null){
sensorManager.unregisterListener(listener);
}
}
SensorEventListener listener=new SensorEventListener() {
//传感器监听
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float xValue=Math.abs(event.values[0]);
float yValue=Math.abs(event.values[1]);
float zValue=Math.abs(event.values[2]);
if(xValue>15||yValue>15||zValue>15){
Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
}