傳感器開發之TYPE_ACCELEROMETER加速度傳感器.

package com.example.tyxiong.myapplication;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

/*傳感器:加速度傳感器 方向傳感器 陀螺/磁場/重力/線性/溫度/光/壓力/心率/
*
*  爲指定傳感器註冊監聽器即可,當環境發生改變時,android系統通過傳感器獲取外部數據,將數據傳給監聽方法..
*  使用3步:
*   1 通過getSystemService() SensorManager對象
*   2 實例方法getDefaultSensor(int type)獲取指定傳感器
*   3 同樣SensorManager方法registerListener()方法爲其註冊監聽
*       3參數listener監聽器實現方法onSensorChanged()值變化 onAccuracyChanged()精度變化
*           sensor被註冊監聽器的傳感器
*           rate獲取環境數據速率 SENSOR_DELAY_UI/NORMAL/GAME/FASTEST
*
* */
public class MainActivity extends Activity {

    StringBuilder sb;
    TextView showx;
    TextView showy;
    TextView showz;

    SensorManager systemService;

    Sensor sensor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        showx = (TextView) findViewById(R.id.showx);
        showy = (TextView) findViewById(R.id.showy);
        showz = (TextView) findViewById(R.id.showz);
        systemService = (SensorManager) getSystemService(SENSOR_SERVICE);
        sensor = systemService.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);


    }

    @Override
    protected void onResume() {
        super.onResume();
        systemService.registerListener(new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent event) {
                sb = new StringBuilder();
                switch (event.sensor.getType()) {
                    case Sensor.TYPE_ACCELEROMETER: {              //加速度傳感器 xyz軸加速度
                        float values[] = event.values;
                        showx.setText(String.valueOf(values[0]));
                        showy.setText(String.valueOf(values[1]));
                        showz.setText(String.valueOf(values[2]));

                    }
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {

            }
        }, sensor, SensorManager.SENSOR_DELAY_NORMAL);

    }

    @Override
    protected void onPause() {

        super.onPause();//可以在暫停時將監聽器取消,耗電...
    }

    @Override
    protected void onStop() {
        super.onStop();
    }
}

效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章