Androidの重力感应
16lz
2021-01-26
Androidの重力感应
1. 图文介绍
假设当地的重力加速度值为g
当手机正面朝上的时候,z的值为q,反面朝上的时候,z的值为-g
当手机右侧面朝上的时候,x的值为g,右侧面朝上的时候,x的值为-g
当手机上侧面朝上的时候,y的值为g,右侧面朝上的时候,y的值为-g
首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感器以及创建各种各样的传感器, 监听器用来监视传感器的变化并且进行相应的操作 首先声明传感器对象:
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() {@Overridepublic 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); 。。。。在这里进行逻辑处理,重力加速逻辑等。。}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}};记得要注销传感器
protected void onStop() {super.onStop();if (sensorManager != null) {// 取消监听器sensorManager.unregisterListener(sensorEventListener);}}
更多相关文章
- Android(安卓)用户界面---拖放(Drag and Drop)
- Android(安卓)传感器 II-运动传感器
- Android传感器 设备坐标系到世界坐标系的转换 分析以及应用
- Android(安卓)Developers:传感器概述
- Android传感器概述(二)
- Android(安卓)传感器 I-传感器基本介绍
- Android:分析onXXX事件监听器中的两个参数position和id
- android高分段进阶攻略(1)传感器
- Android(安卓)用户界面---拖放(Drag and Drop)(一)