傳感器開(kāi)發(fā)

Android 傳感器種類:

  • 光照傳感器
  • 壓力
  • 加速度 == 重力傳感器
  • 方向
  • 陀螺儀
  • 磁極
  • 溫度
  • 濕度

獲取設(shè)備上所有的傳感器:
sensorManager.getSensorList( Sensor.TYPE_ALL )

傳感器的 使用

  • 賽車游戲
  • 微信搖一搖 (加速傳感器)
  • 指南針

傳感器開(kāi)發(fā)關(guān)鍵 API

SensorManager:
    傳感器管理器
    注冊(cè)、關(guān)閉 傳感器
Sensor:
    傳感器 的信息
    (傳感器的類型)
SensorEventListener:
    監(jiān)控 傳感器變化的  監(jiān)聽(tīng)器
SensorEvent:
    傳感器監(jiān)聽(tīng)的 具體參數(shù)值
    .values      [ 具體的傳感器值 ]

傳感器開(kāi)發(fā)步驟:

  1. 獲取 ? SensorManager

    ? ? 傳感器管理器

    ? ? getSystemService( Context.SENSOR_SERVICE )
  2. 獲取 ? Sensor

    ? ? 具體的傳感器

    ? ? sensorManager.getDefaultSensor( Sensor.TYPE_LIGHT )
  3. 為傳感器 ? 注冊(cè) 監(jiān)聽(tīng)器

    ? ? sensorManager.registlistener( listener, sensor, SensorManager.速率 )

    其中:

    ? ? listener :
    ? ? ? ? 實(shí)現(xiàn)了 SensorEventListener 接口的 子類

    ? ? ? ? ? ? 1. onSensorChanged( SensorEvent event) ? 監(jiān)聽(tīng)器變化

    ? ? ? ? ? ? 2. onAccuracyChanged(Sensor sensor, int accuracy)
  4. 釋放 監(jiān)聽(tīng)器資源

    ?sensorManager.unregistlistener( )

demo —— 加速度傳感器

Button button;
TextView textView1;

SensorManager sensorManager;
Sensor sensor;
MySensorEventListender mySensorEventListender;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(com.san.demos.R.layout.layout_main);
    button = (Button) findViewById(com.san.demos.R.id.button);
    textView1 = (TextView) findViewById(com.san.demos.R.id.textview1);
    
    // 1. sensorManager
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

    // 2. sensor_type
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

    // 3. registerListener()
    sensorManager.registerListener(acceleSensorEventListener, sensor,
            SensorManager.SENSOR_DELAY_UI);
}

// 加速度監(jiān)聽(tīng)傳感器
SensorEventListener acceleSensorEventListener = new SensorEventListener() {

    // 監(jiān)聽(tīng)加速度變化
    @Override
    public void onSensorChanged(SensorEvent arg0) {
        float[] values = arg0.values;

        StringBuilder stringBuilder = new StringBuilder("加速度分別為:\n");

        stringBuilder.append(" X 軸上:" + values[0] + '\n')
                .append(" Y 軸上:" + values[1] + '\n')
                .append(" Z 軸上:" + values[2] + '\n');
        
        textView1.setText(stringBuilder.toString());
    }

    @Override
    public void onAccuracyChanged(Sensor arg0, int arg1) {
        // TODO Auto-generated method stub

    }
};

@Override
protected void onDestroy() {
    super.onDestroy();

    // 釋放傳感器監(jiān)聽(tīng)資源
    sensorManager.unregisterListener(acceleSensorEventListener);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容