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();
}
}
傳感器開發之TYPE_ACCELEROMETER加速度傳感器.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.