Androidの重力感应

Androidの重力感应

1. 图文介绍

Androidの重力感应_第1张图片

假设当地的重力加速度值为g
当手机正面朝上的时候,z的值为q,反面朝上的时候,z的值为-g
当手机右侧面朝上的时候,x的值为g,右侧面朝上的时候,x的值为-g
当手机上侧面朝上的时候,y的值为g,右侧面朝上的时候,y的值为-g

2. 了解了重力传感器中X,Y,Z的含义之后下面我们就开始学习如何使用
首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感器以及创建各种各样的传感器,
监听器用来监视传感器的变化并且进行相应的操作
首先声明传感器对象:
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
然后注册监听器 在 onResume()方法中:
protected void onResume() {
   super.onResume();
   if (sensorManager != null) {// 注册监听器
	sensorManager.registerListener(sensorEventListener,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);
	// 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率
    }
}
 重力传感监听类 
  
private SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// 传感器信息改变时执行该方法
float[] values = event.values;
float x = values[0]; // x轴方向的重力加速度,向右为正
float y = values[1]; // y轴方向的重力加速度,向前为正
float z = values[2]; // z轴方向的重力加速度,向上为正
Log.i(TAG, "x轴方向的重力加速度" + x + ";y轴方向的重力加速度" + y + ";z轴方向的重力加速度" + z);
// 一般在这三个方向的重力加速度达到40就达到了摇晃手机的状态。
int medumValue = 19;// 如果不敏感请自行调低该数值,低于10的话就不行了,因为z轴上的加速度本身就已经达到10了
if (Math.abs(x) > medumValue || Math.abs(y) > medumValue|| Math.abs(z) > medumValue) {
vibrator.vibrate(500);
 。。。。在这里进行逻辑处理,重力加速逻辑等。。
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
记得要注销传感器
protected void onStop() {
super.onStop();
if (sensorManager != null) {// 取消监听器
sensorManager.unregisterListener(sensorEventListener);
}
}


你可能感兴趣的:(游戏,android,service,手机,delay)