传感器的简单应用之光照传感器
1.手机上传感器的使用首先需要得到系统服务
private SensorManager mSensorManager;
mSensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
2.然后得到在得到服务的类型,即选用哪种传感器
Sensor sensor=mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
3.需要注册监听传感器的使用
//注册监听事件,第一个参数是SensorEventListener,第二个参数是传感器的类型,第三个参数是刷新频率,
mSensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
4.注册监听事件是:
//当传感器精度发生变化时,会调用onAccuracyChanged方法,当传感器检测到的数值发生变化时,就会调用onSensorChanged方法
//在光照强度监听住event数组中目前只有一个值,即光照强度
private SensorEventListener listener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float values=event.values[0];
mTextView.setText("当前关照强度为"+values+"lx");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
5.最后在onDestory中注销该监听事件,释放资源
if (mSensorManager!=null){
mSensorManager.unregisterListener(listener);//注销监听事件,释放资源
}
传感器的简单应用之加速度传感器
1.加速度传感器的使用基本和光照传感器类似,只不过是将得到的传感器的类型改变为TYPE_ACCELEROMETER
private SensorManager mSensorManager;
mSensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
2.在注册监听事件中SensorEvent的values数组存放了3个值
//加速度传感器的监听事件,在values数组中会存放3个值,分别代表手机在X轴Y轴Z轴方向上的加速度信息
//由于地心引力的存在,初始的加速度的值大约为9.8m/s*s,当手机平放的时候这个加速度是在Z轴方向上的
//当手机竖起来的时候这个加速度是在Y轴上的,当手机横立起来的时候这个加速度方向是在X轴上的
private SensorEventListener listener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float xValues=event.values[0];
float yValues=event.values[1];
float zValues=event.values[2];
//模仿微信摇一摇功能
if(xValues>15.0||yValues>15.0||zValues>15.0){
//如果某一个方向上的加速度值大于15.0就弹出一个Toast
Toast.makeText(AccelerometerActivity.this, "恭喜获奖", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
3.最后在onDestroy()方法中注销监听事件,释放资源
@Override
protected void onDestroy() {
super.onDestroy();
if (mSensorManager!=null){
mSensorManager.unregisterListener(listener);
}
}
传感器的综合引用,加速度传感器和地磁传感器的结合,以及SurfaceView绘画来制作一个简单的指南针
1.首先是得到这两个传感器,然后进行注册监听。
private SensorManager mSensorManager;
mSensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);//得到传感器服务
Sensor sensorAcc=mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//得到加速度传感器
Sensor sensorMagn=mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);//得到地磁传感器
mSensorManager.registerListener(listener,sensorAcc,SensorManager.SENSOR_DELAY_GAME);//注册加速度传感器监听事件
mSensorManager