传感器
传感器的类型:
加速度传感器 |
TYPE_ACCELEROMETER |
陀螺仪传感器 |
TYPE_GYROSCOPE |
重力传感器 |
TYPE_GRAVITY |
线性加速度传感器 |
TYPE_LINEAR_ACCELERATTION |
温度传感器 |
TYPE_TEMPERATURE |
光标传感器 |
TYPE_LIGHT |
压力传感器 |
TYPE_PRESSURE |
.磁场传感器 |
TYPE_MAGNETIC_FIELD |
所有类 |
TYPE_ALL |
方向传感器 |
TYPE_ORIEBTATTION |
Useage:
第一步:
//定义系统系统的sensor(传感器)管理器
SensorManager sensorManager;
第二步:
在方法: protected void onCreate(Bundle savedInstanceState)
获取系统传感器管理服务
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
//定义系统系统的sensor(传感器)管理器
SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText1=findViewById(R.id.edit1);
//获取系统的传感器管理服务
sensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
第三步:
在onResume()这个方法中注册监听器(这个方法需要重写)
registerListener里面有三个参数
registerListener(
Listener listener //监听器
Sensor sensor , //传感器对象
int rate //传感器的获取数据频率
);
方向传感器 |
TYPE_ORIEBTATTION |
@Override
public void onResume(){
super.onResume();
//为系统的加速度传感器注册监听器
sensorManager.registerListener(
this, //监听器
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), //传感器对象
SensorManager.SENSOR_DELAY_UI //传感器的数据频率
);
}
第四步:为了节省内存,我们需要当程序停止,我们需要注销注册
@Override
public void onStop() {
//取消注册
sensorManager.unregisterListener(this);
super.onStop();
}
@Override
public void onPause() {
//取消注册
super .onPause() ;
}
最后一步:
在Avtivity事件中需要实现SensorEventListener 这个接口
实现这个接口之后就需要实现2个方法:
//当传感器的值发生改变的时候回调该方法
@Override
public void onSensorChanged(SensorEvent event){}
//当传感器精度改变时回调该方法
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
下面给大家展示一下如何使用:(因为要联系到我们不只是用一个传感器所以使用switch来判断传感器的类型(int))
@Override
public void onSensorChanged(SensorEvent event) {
//获取传感器的类型
int sensirType=event.sensor.getType();
StringBuilder sb=null;
float[] values=event.values;
switch (sensirType){
case Sensor.TYPE_ORIENTATION:
sb=new StringBuilder();
//方向传感器
sb.append("绕Z轴转动的角度:");
sb.append(values[0]);
sb.append("\n绕X轴转动的角度:");
sb.append(values[1]);
sb.append("\n绕Y轴转动的角度:");
sb.append(values[2]);
editText1.setText(sb.toString());
break;
总结:
第一步:定义传感器管理
第二步:获取传感器服务
第三步:注册传感器
第四步:注销传感器(暂停的时候)
第五步:获取数据(需要实现接口(SensorEventListener))