首頁>Club>
8
回覆列表
  • 1 # 夢裡已過半生

    首先找資料,瞭解安卓感測器主要分為三種

    動作感測器:加速感測器,重力感測器,陀螺儀感測器,旋轉向量感測器

    環境感測器,光線感測器,溫度感測器(據說還有大氣壓感測器)

    位置感測器:方向感測器,磁場感測器


    其中這些感測器又分為硬體感測器和軟體感測器!所謂硬體感測器就是純粹基於手機硬體獲取的資料

    而軟體感測器並不是真實存在,而是基於硬體感測器基於一系列演算法產生的偽感測器,比如方向感測器就是基於距離感測器和磁場感測器經過這兩個感測器一系列演算法得出!


    在安卓開發中,已經提供了感測器的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 開始考慮感測器採集的資料以及演算法邏輯了,以上三步全是模板程式碼,第四步才是感測器開發的核心!

  • 中秋節和大豐收的關聯?
  • 嫁了個一事無成,月入三千,又懶又不去拼的老公,你會怎麼辦?