1###傳感器介紹
手機(jī)中內(nèi)置的傳感器是一種微型的物理設(shè)備,它能夠探測(cè)、感受到外界的信號(hào),并按一定規(guī)律轉(zhuǎn)換成我們所需要的信息。
Android 手機(jī)通常都會(huì)支持多種類型的傳感器,如光照傳感右器、加速度傳感器、地磁傳感器、壓力傳感器、溫度傳感器等。
雖然 Android 系統(tǒng)支持十余種傳感器的類型,但是手機(jī)里的傳感器設(shè)備卻是有限的,基本上不會(huì)有哪部手機(jī)能夠支持全部的傳感器功能。
12.2光照傳感器
12.2.1光照傳感器的用法
SensorManager是系統(tǒng)所有傳感器的管理器.現(xiàn)貨區(qū)SensorManager的實(shí)例.
SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
SensorManager的getDefaultSensor()用于得到任意的傳感器類型.
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
通過(guò)SensorEventListener實(shí)現(xiàn)對(duì)傳感器型號(hào)的監(jiān)聽.他是個(gè)借口,定義了onSensorChanged()和onAccuracyChanged().
SensorEventListener listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
}
};
當(dāng)傳感器精度變化時(shí),調(diào)用onAccuracyChanged();當(dāng)傳感器的數(shù)值發(fā)生變化時(shí),調(diào)用onSensorChanged().onSensorChanged()的闡述SensorEvent包含了一個(gè)valuse數(shù)組,所有的信息都存儲(chǔ)在這里.
SensorEventListener需要SensorManager調(diào)用registerListener()方法注冊(cè)才可以生效.registerListener()接受三個(gè)參數(shù),SensorEventListener,Sensor,和更新速率.第三個(gè)參數(shù)是用于表示傳感器輸出信息的更新速率,共有 SENSOR_DELAY_UI、 SENSOR_DELAY_NORMAL、SENSOR_DELAY_GAME 和 SENSOR_DELAY_FASTEST 這四種值可選,它們的更新速率是依次遞增的。
當(dāng)程序退出或者傳感器使用完畢時(shí),要調(diào)用unregisterListener()釋放資源.