使用传感器的步骤:
1、获得传感器管理器实例
sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);2、获取传感器类型
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
3、编辑传感器监听器
SensorEventListener listener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { //当传感器监测到的数值发生变化时就会调用 //SensorEvent参数,这个参数里又包含了一个values数组,所有传感器输出的信息都是存放在这里的。 } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { //当传感器的精度发生变化时就会调用 } };4、调用SensorManager的registerListener()方法来注册SensorEventListener才能使其生效//第一个参数就是SensorEventListener的实例, //第二个参数是Sensor的实例,这两个参数我们在前面都已经成功得到了。 //第三个参数是用于表示传感器输出信息的更新速率sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);下面是对光传感器的简单应用代码:package com.adolph.lightsensortest; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { //系统传感器管理器 private SensorManager sensorManager; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.light_level); //获取一个实例 sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); //getDefaultSensor()获取传感器类型 Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //调用SensorManager的registerListener()方法来注册SensorEventListener才能使其生效 //第一个参数就是SensorEventListener的实例, //第二个参数是Sensor的实例,这两个参数我们在前面都已经成功得到了。 //第三个参数是用于表示传感器输出信息的更新速率 sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL); } protected void onDestroy(){ super.onDestroy(); if (sensorManager != null){ sensorManager.unregisterListener(listener); } } SensorEventListener listener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { //当传感器监测到的数值发生变化时就会调用 //SensorEvent参数,这个参数里又包含了一个values数组,所有传感器输出的信息都是存放在这里的。 float value = event.values[0]; textView.setText("Current light level is " + value + " lx"); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { //当传感器的精度发生变化时就会调用 } }; }