開發平台:

Android studio (version 2.2.3)

實機測試平台:

ASUS Zenfone6 (Android 5)

實作內容:

由於以後的程式開發會需要使用到手機內部的感應器,所以先自己學習如何取得手機感應器的值。這次只有取出Light、Accelerometer的數值。

Ps. 本來有打算要取tempature,但是發現並不是每隻手機都有支援(我的 Zenfone6 沒試出來,所以可能不支援吧,也有可能是我沒打好啦),所以就沒有實作了。

 

1. 先取得SensorManager的服務。

eg.

SensorManager sensor=(SensorManger)getSystemService(SENSOR_SERVICE)

2. 建立一個監聽事件的呼叫介面。

eg.

SensorEventListener listen=new SensorEventListener(){

@Override

public void onSensorChanged(SensorEvent event){}

@Override

public void onAccuracyChanged(Sensor sensor,int accuracy){}

}

3.因為感應器很耗資源,所以必須在onPause中取消感應器的監聽事件,onResume中在重新對感應器做註冊監聽事件。(整個流程閱讀過android activity流程會比較清楚)

eg.

@Override

protected void onResume(){

super.onResume();

sensor.registerListener(listen,sensor.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),

 Sensor.SENSOR_DELAY_NORMAL);

}

@Override

protected void onPause(){

super.onPause();

sensor.unregisterListener(listen);

}

測試結果:

sensor.jpg

程式檔:

https://github.com/shen0512/Sensor

arrow
arrow
    全站熱搜

    a7069810 發表在 痞客邦 留言(0) 人氣()