1. 程式人生 > >關於sensor在android系統原生應用中的使用(從應用層面驗證sensor移植)

關於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關閉.