手机传感器,方位东南西北,手机前后抬起角度,左右抬起角度。
首先实现SensorEventListener类,必须继承俩个方法,onAccuracyChanged(此方法不用管因为参数会一直随着手机改变)和onSensorChanged(这里面获取数据)。
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
// 方向传感器提供三个数据,分别为azimuth、pitch和roll。
// event.values[0] azimuth:方位,返回水平时磁北极和Y轴的夹角,范围为0°至360°。
// 0°=北,90°=东,180°=南,270°=西。
// event.values[1] pitch:y轴和水平面的夹角,范围为-180°至180°。 。
//手机放在桌面角度为0,然后前端或后端开始抬起,值会改变
// event.values[2] roll:x轴和水平面的夹角,由于历史原因,范围为-90°至90°。
//手机放在桌面角度为0,然后左边或右边开始抬起值会改变
//手机方位,东南西北
double azimuth = event.values[0];
//手机前后翻转角度
double pitch = event.values[1];
//手机左右翻转角度
double roll = event.values[2];
}
}
然后再onCreate方法里面初始化注册传感器
private SensorManager sensorManager = null;
private Sensor gyroSensor = null;
//初始化注册手机传感器
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
gyroSensor = sensorManager
.getDefaultSensor(Sensor.TYPE_ORIENTATION);
这样就可以获取到了。
当然在onPause里面要解除监听状态
sensorManager.unregisterListener(this); // 解除监听器注册
在onResume里面要重新注册
sensorManager.registerListener(this, gyroSensor,
SensorManager.SENSOR_DELAY_NORMAL); //为传感器注册监听器
这样一个完整的手机传感器3个数据就可以获取到了,希望你学到了。