關於sensor在android系統原生應用中的使用(從應用層面驗證sensor移植)
sensor的使用由android系統應用和使用者應用兩層來使用.
根據jwisp的經驗和實驗, 下面總結一下三個sensor在系統和應用裡面是什麼時候使用, 什麼時候開啟和關閉的, 以方便大家移植和除錯
一. sensor在應用中的使用
sensor在framework 中提供給應用的主要有四個類
Sensor類(提供Sensor物件,Sensor的一些基本引數和配置,在物件初始化的時候完成.)
SensorManger (提供主要的對感測器的操作和功能,使用和呼叫)
SensorEventListener (Sensor的*********介面,當發生相應事件時,呼叫此介面的方法)
SensorEvent (Sensor事件)
應用層若使用Sensor時,有以下幾個關鍵的方法.
1. 呼叫activity的getSystemService方法來得到一個SensorManager物件. SenSorManager sensorManager = getSystemService(SENSOR_SERVICE);
2. 通過SensorManager得到要使用的Sensor物件. 如: Sensor sensor = sensorManger.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
3. 實現一個Sensor*********介面的類, SensorEventListener sensorListener = new SensorEventListener(){};
4. 通過manager為sensro註冊*********. sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_GAME);
二. sensor在系統應用中的使用
accelerometer, proximity, light 三個sensor都在系統當中都有重要的應用:
1. accelerometer 主要是在橫豎屏中使用, 根據asensor的三個xyz值來算出,當前需要如何調整螢幕需要適應的方向
2. proximity 在接聽電話時, 防止當耳朵觸控到螢幕上的按鍵而出現結束通話這種誤操作, 在通話中, 若接近則關閉螢幕, 若遠離則開啟螢幕
3. light sensor可用根據對外界的光感應來自動設定螢幕亮度.
三個sensor在系統中, 預設的開啟和關閉
1. a-sensor在機器進入睡眠後, 會關閉, 在喚醒後,會開啟
2. p-sensor在進入電話狀態後, 會開啟, 結束通話電話後, 會關閉
3. l-sensor在螢幕開啟時會開啟, 在螢幕關閉時會關閉.
注意在通話過程中, 會出現, 螢幕關閉, 但是機器並沒有進入睡眠狀態的情況, 此時a-sensor開啟, 而l-sensor關閉.