加速传感器
是一种用于描述物体运动速度改变快慢的物理量,以m/s2为单位
一 获取传感器管理器的实例
SensorManager manager = (SernsorManager)getSystemService(SENSOR_SERVICE)
SensorManager 是系统中所有传感器的管理器, 有了它可以调用getDefaultSensor()方法
Sensor sensor = sensorMananger.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
加速度传感器输出的信息同样是存放在SensorEvent 的value数组中的,values数组中有三个值,分别代表x,y,z轴上的加速度信息
手机平放上,加速度是Z轴
手机竖立 加速度在Y轴
手机横立,加速度在X轴
基本的传感器
package com.yifei.myapplication;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView textView;
SensorManager manager;
Sensor sensor;
private MySensorEventListener mySensorEventListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
//得到传感器管理器实例
manager = (SensorManager) getSystemService(SENSOR_SERVICE);
mySensorEventListener = new MySensorEventListener();
if (manager != null) {
//获取传感器实例
sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if (sensor != null) {
//注册加速度传感器
manager.registerListener(mySensorEventListener, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}
}
//监听器
private class MySensorEventListener implements SensorEventListener {
//当传感器的精度发送变化时通用的方法
@Override
public void onSensorChanged(SensorEvent event) {
//当前传感器的值可为负值
float xValue = Math.abs(event.values[0]);
float yValue = Math.abs(event.values[1]);
float zValue = Math.abs(event.values[2]);
Log.d("MainActivity12", "onSensorChanged: " + xValue + "-->" + yValue + "-->" + zValue);
}
//当传感器的值发生变化
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
//activity销毁时,销毁传感器的监听器
@Override
protected void onDestroy() {
super.onDestroy();
if(manager!=null){
manager.unregisterListener(mySensorEventListener);
}
}
}