Android三类传感器-动作传感器-位置传感器-环境传感器

Android的传感器主要分为三类:动作传感器,位置传感器和环境传感器。


动作传感器
Android的动作传感器主要在XYZ轴上测量加速度和旋转角度,主要有以下几种:

  1. 加速传感器(Accelerameter)
  2. 陀螺仪传感器(Gyroscope)
  3. 重力传感器(Gravity)
  4. 旋转向量传感器(Rotational vetor)

在获取某传感器参数之前,我们需要查看ANDROID设备是否支持该传感器,下面首先演示如何获取一个设备所支持的所有传感器。

我们需要一个SensorManager类来获取传感器的相关信息,并把它显示在TextView当中。

SensorManager sensorManager= (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
            List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);
            for (Sensor sensor:sensors) {
                tv_sensors.append(sensor.getName() + "\n");
            }

动作传感器–以加速度传感器为例
要监听传感器的回传数据,需要实现SensorEventListener接口,并重写方法onSensorChanged(),onAccuracyChanged(),和重写Fragment类中的onResume()和onPause()。
首先在onResume()中注册要监听的传感器类型(以加速度传感器为例)

        @Override
        public void onResume() {
            super.onResume();
            sensorManager.registerListener(this,
                    sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                    SensorManager.SENSOR_DELAY_FASTEST);
        }

SENSOR_DELAY_FASTEST表示监听数据的速度很快。

在onPause()销毁该传感器

 @Override
        public void onPause() {
            super.onPause();
            sensorManager.unregisterListener(this);
        }

在onSensorChanged()中写捕捉到传感器后的动作

 @Override
        public void onSensorChanged(SensorEvent event) {
            switch (event.sensor.getType()) {
                case Sensor.TYPE_ACCELEROMETER:
                    String string_accelerameter = "加速度X:" + event.values[0] + "/|Y:" + event.values[1] + "/|Z:" + event.values[2];
                    tv_accelerameter.setText(string_accelerameter);
                    break;
                case Sensor.TYPE_ROTATION_VECTOR:
                    String string_TYPE_ROTATION_VECTOR = "X:" + event.values[0] + "/|Y:" + event.values[1] + "/|Z:" + event.values[2];
                    Log.v("TYPE_ROTATION_VECTOR", string_TYPE_ROTATION_VECTOR);
                    break;
            }
        }

位置传感器
位置传感器常用的有3个:
方向传感器TYPE_ORIENTATION,
磁场传感器TYPE_MAGNETOMETER
邻近传感器TYPE_PROXIMITY。
其中邻近传感器使用最多,即在接听电话时判断人脸与屏幕的距离从而判断是否熄灭屏幕以防止误触。
方向传感器,磁场传感器都有3个返回值(event.value[0],event.value[1],event.value[2]),而邻近传感器只有一个返回值(event.value[0])。
设置位置传感器的方法与动作传感器相同,即在onResume()方法内注册传感器,并在onSensorChanged()监听返回值。

在方向传感器中,event.value[0]表示绕着Z轴(上下)旋转的角度,如果Y轴正对北方, 返回值为0;如果Y轴正对东方, 返回值为90,如果Y轴正对南方, 返回值为180,如果Y轴正对西方, 返回值为270。
event.value[1]表示绕着Y轴(前后)旋转的角度。
event.value[2]表示绕着X轴(左右)旋转的角度。


环境传感器
ANDROID APIs中提供了4个环境传感器,分别为
温度TYPE_AMBIENT_TEMPERATURE(℃),
压力TYPE_PRESSURE(hPa),
光线TYPE_LIGHT(lx),
湿度TYPE_RELATIVE_HUMIDITY(RH).
手机最常用的是光线,这些传感器都只有一个返回值。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值