傳感網開發項目的步驟?
首先找資料,了解安卓傳感器主要分為三種動作傳感器:加速傳感器,重力傳感器,陀螺儀傳感器,旋轉向量傳感器
環境傳感器,光線傳感器,溫度傳感器(據說還有大氣壓傳感器)
位置傳感器:方向傳感器,磁場傳感器
其中這些傳感器又分為硬件傳感器和軟件傳感器!所謂硬件傳感器就是純粹基于手機硬件獲取的數據
而軟件傳感器并不是真實存在,而是基于硬件傳感器基于一系列算法產生的偽傳感器,比如方向傳感器就是基于距離傳感器和磁場傳感器經過這兩個傳感器一系列算法得出!
在安卓開發中,已經提供了傳感器的API就是
1 SensorManager類,該類是用來注冊,監聽,銷毀監聽器的方法,以及獲取傳感器數量種類精度等方法
2 Sensor類是提供了傳感器的信息比如傳感器的類型,版本,制造商等等比如常見的SENSORType類型
序號傳感器Sensor類中定義的TYPE常量1加速度傳感器TYPE_ACCELEROMETER2溫度傳感器TYPE_AMBIENT_TEMPERATURE3陀螺儀傳感器TYPE_GYROSCOPE4光線傳感器TYPE_LIGHT5磁場傳感器TYPE_MAGNETIC_FIELD6壓力傳感器TYPE_PRESSURE7臨近傳感器TYPE_PROXIMITY8濕度傳感器TYPE_RELATIVE_HUMIDITY9方向傳感器TYPE_ORIENTATION10重力傳感器TYPE_GRAVITY11線性加速傳感器TYPE_LINEAR_ACCELERATION12旋轉向量傳感器TYPE_ROTATION_VECTOR
3 SensorEventListener接口,主要就是傳感器開發的監聽回調,傳感器的數值發生變化時就會調用這個方法
4 SensorEvent類是回調監聽的參數,主要封裝了傳感器的監聽數值(以數組形式存在)
這個就是傳感器開發會用到的主要API,話說查了不少資料...
待會后面的一些內容是我這次項目開發用不到的,但是為了考慮以后會遇上,我就一并記錄在這里了,這樣之后在進行傳感器開發,我不用再去查資料了,直接看我這篇帖子就囊括了大部分的資料
然后是我們要確定傳感器的開發流程
1創建傳感器管理類,
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
2選擇項目開發中會遇到的傳感器(最好打印出列表看手機支持那些傳感器,主要用來看手機支持那些傳感器,實際開發不需要這行代碼)
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);//主要用來看看手機支持哪些傳感器,可以不寫
3注冊你要監聽的傳感器監聽器,實現監聽方法
我的項目經過我的測試實際用到的是方向傳感器
//方向傳感器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_UI);
這里要注意了,要為了用戶負責,注冊了就要反注冊,否則傳感器可是耗電大戶,我們一般在onResume注冊監聽,在onPause進行解綁
mSensorManager.unregisterListener(this);
這里介紹下監聽器的三個參數
registerListener(參數一,參數二,參數三)
參數一就是監聽回調對象,實現這個接口,編譯器會自動復寫這兩個方法,我們下面再介紹這兩個方法
參數二你需要監聽的傳感器類型
參數三 傳感器獲取數值的模式,你可以理解成傳感器監聽周圍變化塊慢,這個參數是一個常量,一般有四種
SENSOR_DELAY_FASTEST 最快,耗電大戶 ,監聽的越快耗電量越大,這種模式一般不建議使用,因為監聽周圍大量的數據,算法如果不好將會影響游戲邏輯以及UI性能
SENSOR_DELAY_GAME 一般用來開發游戲,用于實行性較高的游戲比如一些賽車游戲,游戲開發建議用這個模式
SENSOR_DELAY_NORMAL 默認的平率,對于一般的益智類游戲使用,比如根據重力來調整小球進洞的小游戲,如果這個模式應用在賽車游戲上,采樣率太低會導致跳幀
SENSOR_DELAY_UI 根據傳感器更新UI,我們一般根據傳感器的值變化用來繪制我們相應的UI,延遲一點反而好不用平凡的繪制UI造成性能浪費
4 開始考慮傳感器采集的數據以及算法邏輯了,以上三步全是模板代碼,第四步才是傳感器開發的核心!