美文网首页
加速度传感器

加速度传感器

作者: TTTqiu | 来源:发表于2016-05-11 21:56 被阅读143次

一、加速度传感器的用法


1. 获取 SensorManager 实例。
SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
2. 通过 getDefaultSensor() 得到某种传感器的实例。
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
3. 借助 SensorEventListener 对传感器输出的信号进行监听。
SensorEventListener listener = new SensorEventListener() {

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
    }
};
  • 当传感器的精度发生变化时就会调用 onAccuracyChanged() 方法。
  • 当传感器监测到的数值发生变化时就会调用 **onSensorChanged() **方法。
    **onSensorChanged() **方法中传入了一个 SensorEvent 参数,这个参数里又包含了一个 values 数组,所有传感器输出的信息都是存放在这里的。
  • 此时的** values** 数组中会有三个值,分别代表手机在 X 轴Y 轴和** Z 轴**方向上的加速度信息。
4. 调用 SensorManager 的 registerListener() 方法来注册SensorEventListener 使其生效。
senserManager.registerListener(listener, senser, SensorManager.SENSOR_DELAY_NORMAL);
  • 第一个参数:SensorEventListener 的实例
  • 第二个参数:Sensor 的实例
  • 第三个参数:传感器输出信息的更新速率。以下更新速率是依次递增。
  • SENSOR_DELAY_UI
  • SENSOR_DELAY_NORMAL
  • **SENSOR_DELAY_GAME **
  • **SENSOR_DELAY_FASTEST **
5. 最后调用 unregisterListener() 方法将使用的资源释放掉。
sensorManager.unregisterListener(listener);

二、模仿微信摇一摇


public class MainActivity extends Activity {
    private SensorManager sensorManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sensorManager = (SensorManager) getSystemService (Context.SENSOR_SERVICE);
        Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (sensorManager != null) {
            sensorManager.unregisterListener(listener);
        }
    }

    private SensorEventListener listener = new 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]);
            if (xValue > 15 || yValue > 15 || zValue > 15) {
                // 认为用户摇动了手机,触发摇一摇逻辑
                Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
        }
    };
}

相关文章

  • iOS加速度传感器简介

    iOS加速度传感器 加速度传感器是根据x,y和z三个方向来检测设备位置的变化 iOS设备正面朝上放置,加速度传感器...

  • Xamarin Essentials教程使用加速度传感器Acce

    Xamarin Essentials教程使用加速度传感器Accelerometer 加速度传感器是一种能够测量加速...

  • Android 几个常用的 sensor 简单使用实例

    光线传感器的使用实例: 对应的布局文件如下: 加速度传感器的使用实例: 加速度传感器实例对应的布局文件代码如下(默...

  • 19 传感器

    传感器的分类Motion sensors 加速度传感器,重力传感器,陀螺仪Environment sensors ...

  • Android 传感器开发详解

    Android 传感器开发详解 传感器 传感器的分类 方向传感器 陀螺仪传感器 磁场传感器 重力传感器 线性加速度...

  • 传感器开发

    Android 传感器种类: 光照传感器 压力 加速度 == 重力传感器 方向 陀螺仪 磁极 温度 湿度 获取...

  • Android手机传感器的简单介绍

    Android手机传感器的使用 1、传感器的分类 动作传感器:加速度传感器、重力传感器、陀螺仪等位置传感器:方向传...

  • 传感器实现仿微信摇一摇功能

    导语 如今Android手机中,硬件中内嵌了很多传感器(比如加速度传感器,重力传感器,陀螺仪传感器,方向传感器,压...

  • 学习笔记1

    多传感器融合算法 多传感器数据融合算法---9轴惯性传感器 - hmmwjs的博客 - CSDN博客 加速度计模型...

  • 第十周--传感器

    传感器类型: 加速度:SENSOR_TYPE_ACCELEROMETER 磁力:SENSOR_TYPE_MAGNE...

网友评论

      本文标题:加速度传感器

      本文链接:https://www.haomeiwen.com/subject/nxvurttx.html