(安卓自学笔记)加速度传感器

原文章

点击打开链接传感器简介

点击打开链接传感器详解及拓展

权限权限

<uses-permission android:name="android.permission.SENSOR_INFO"/>
    <!--传感器信息-->
    <uses-permission android:name="android.permission.SENSOR_ENABLE"/>
    <!--打开传感器-->

声明一个传感器管理类

private SensorManager sensorManager;

实现SensorManager并从中得到加速度传感器

sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor acc_sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

得到所有传感器的信息的方法

List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
        String sensorNameList="传感器个数:"+sensorList.size()+"\r\n";
for (Sensor sensor : sensorList) {
            sensorNameList+=sensor.getName()+"\r\n";
        }

其余信息

sensor.getName();   //获得传感器名称
    sensor.getType();     //获得传感器种类
    sensor.getVendor();    //获得传感器供应商
    sensor.getVersion();    //获得传感器版本
    sensor.getResolution();  //获得精度值
    sensor.getMaximumRange(); //获得最大范围
    sensor.getPower();        //传感器使用时的耗电量 

常用传感器

1.  加速度传感器(重力传感器)TYPE_ACCELEROMETER
     2.  陀螺仪传感器TYPE_GYROSCOPE
     3.  光传感器TYPE_LIGHT
     5.  恒定磁场传感器TYPE_MAGNETIC_FIELD
     6.  方向传感器TYPE_ORIENTATION(被废弃,用getOrientation来代替)
     7.  恒定的压力传感器TYPE_PRESSURE
     8.  接近传感器(距离传感器)TYPE_PROXIMITY
     9.  温度传感器TYPE_TEMPERATURE
    10.旋转矢量传感器(由其他传感器生成)TYPE_ROTATION_VECTOR

为某个传感器注册事件监听

sensorManager.registerListener(new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent event) {//传感器的值变化
                x=event.values[0];
                y=event.values[1];
                z=event.values[2];
            }
            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {//精度改变
            }
        }, acc_sensor, SensorManager.SENSOR_DELAY_GAME);//监听器类型FASTEST,NORMAL

传感器数据的来源是SensorEvent,这个类中有一个values的变量,类型是Float[]

该变量最多有只有三个元素,而且传感器不同,对应元素代表的含义也不同

比如方向传感器中第一个元素是方位角的值,而气压传感器中第一个值则是气压值,加速度传感器则是三位坐标系三个方向的加速度

对应的参数:传感器对象,传感器管理对象传感器的延时精度,有四个可选值:

  • SENSOR_DELAY_FASTEST——延时:0ms
  • SENSOR_DELAY_GAME——延时:20ms
  • SENSOR_DELAY_UI——延时:60ms
  • SENSOR_DELAY_NORMAL——延时:200ms

为某个传感器取消事件监听

sensorManager.unregisterListener();

猜你喜欢

转载自blog.csdn.net/weixin_40980148/article/details/80377938