书山有路勤为径,学海无涯苦作舟。
本讲内容:传感器
一、传感器简介
手机中内置的传感器是一种微型的物理设备,它能够探测、感受到外界的信号,并按一定规律转换成我们所需要的信息。Android手机支持多种类型的传感器,如光照传感器、加速度传感器、地磁传感器、压力传感器、温度传感器等。
1)光照传感器
譬如系统就有个自动调整屏幕亮度的功能。它会检测手机周围环境的光照强度,然后对手机屏幕的亮度进行相应地调整,以保证不管在强光还是弱光下,手机屏幕都能看得清。
步骤:(Android中每个传感器的用法比较类似)
1、获取SensorManager的实例
SensorManager mSensorManager=(SensorManager) getSystemService(Context.SENSOR_SERVICE);
2、
SensorManager是系统所有传感器的管理器械,调用getDefaultSensor()方法可以得到任意的传感器类型。
Sensor sensor=mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
3、对传感器输出的信号进行监听,借助SensorEventListener接口来实现,有
onAccuracyChanged()和onSensorChanged()方法。当传感器的精度发生变化时就会调用
onAccuracyChanged()方法,当传感器监测到的数值发生变化时就会调用onSensorChanged(SensorEvent event)方法,这个参数里包含一个values数组,所有传感器输出的信息都是存放在这里的。
4、调用SensorManager的registerListener()方法来注册SensorEventListener才能使其生效。registerListener()方法接收三个参数,第一个参数是SensorEventListener的实例,第二个参数是Sensor的实例,第三个参数是用于表示传感器输出信息的更新速率,共有SENSOR_DELAY_UI、SENSOR_DELAY_NORMAL、SENSOR_DELAY_GAME和SENSOR_DELAY_FASTEST这四种可选,它们的更新速率是依次递增的。
mSensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_FASTEST);
5、当程序退出或传感器使用完毕时,要调用unregisterListener()方法将使用的资源释放掉。
mSensorManager.unregisterListener(listener);
示例一:
下面是res/layout/activity_main.xml 布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/id_light_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="25sp" />
</RelativeLayout>
下面是MainActivity.java主界面文件:
public class MainActivity extends Activity {
private SensorManager mSens