Android中传感器种类介绍

说到传感器,我们比较熟悉的就是手机的重力传感器,光线传感器。因为我们很多感应手机旋转,打电话时靠近耳朵屏幕熄灭,这些都是传感器的功劳。今天我就介绍一下Android中传感器的种类,并说明如何获取当前手机支持的传感器。

1.Android中传感器的种类

编号 Sensor类的传感器类型 传感器名称 说明
1 TYPE_ACCELEROMETER 加速度 常用于摇一摇功能
2 TYPE_MAGNETIC_FIELD 磁场  
3 TYPE_ORIENTATION 方向

已弃用,取而代之的是getOrientation方法

4 TYPE_GYROSCOPE 陀螺仪 用来感应手机的旋转和倾斜
5 TYPE_LIGHT 光线 用来感应手机正面的光线强弱
6 TYPE_PRESSURE 压力 用来感应气压
7 TYPE_TEMPERATURE 温度 已弃用,取而代之的是类型13
8 TYPE_PROXIMITY 距离  
9 TYPE_GRAVITY 重力  
10 TYPE_LINEAR_ACCELERATION 线性加速度  
11 TYPE_ROTATION_VECTOR 旋转矢量  
12 TYPE_RELATIVE_HUMIDITY 相对湿度  
13 TYPE_AMBIENT_TEMPERATURE 环境温度  
14 TYPE_MAGNETIC_FIELD_UNCALIBRATED 无标定磁场  
15 TYPE_GAME_ROTATION_VECTOR 无标定旋转矢量  
16 TYPE_GYROSCOPE_UNCALIBRATED 未校准陀螺仪  
17 TYPE_SIGNIFICANT_MOTION 特殊动作  
18 TYPE_STEP_DETECTOR 步行检测 用户每走一步就触发一次事件
19 TYPE_STEP_COUNTER 步行计数 记录激活后的步伐数
20 TYPE_GEOMAGNETIC_ROTATION_VECTOR 地磁旋转矢量  
21 TYPE_HEART_RATE 心跳速率 可穿戴设备使用,如手环
22 TYPE_TILT_DETECTOR 倾斜检测  
23 TYPE_WAKE_GESTURE 唤醒手势  
24 TYPE_GLANCE_GESTURE 掠过手势  
25 TYPE_PICK_UP_GESTURE 拾起手势  

2.获取当前手机全部传感器类型示例

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_sensor"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</RelativeLayout>

MainActivity.java

public class MainActivity extends BaseActivity {

    private TextView tv_sensor;

    @Override
    protected MvcBaseModel getModelImp() {
        return null;
    }

    @Override
    protected int getContentLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void initWidget() {
        tv_sensor = findViewById(R.id.tv_sensor);
        SensorManager mSensorMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        // 获取当前设备支持的传感器列表
        List<Sensor> sensorList = mSensorMgr.getSensorList(Sensor.TYPE_ALL);
        String content = "";
        for (int i = 0; i < sensorList.size(); i++) {
            if (sensorList.get(i).getType() == Sensor.TYPE_ACCELEROMETER) {
                //加速度传感器
                content += i + "." + "加速度传感器" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_MAGNETIC_FIELD) {
                //磁场传感器
                content += i + "." + "磁场传感器" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_ORIENTATION) {
                //方向传感器
                content += i + "." + "方向传感器" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_GYROSCOPE) {
                //陀螺仪
                content += i + "." + "陀螺仪" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_LIGHT) {
                //光线
                content += i + "." + "光线" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_TEMPERATURE) {
                //温度
                content += i + "." + "温度" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_PRESSURE) {
                //压力
                content += i + "." + "压力" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_PROXIMITY) {
                //距离
                content += i + "." + "距离" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_GRAVITY) {
                //重力
                content += i + "." + "重力" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_LINEAR_ACCELERATION) {
                //线性加速度
                content += i + "." + "线性加速度" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_ROTATION_VECTOR) {
                //旋转矢量
                content += i + "." + "旋转矢量" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_RELATIVE_HUMIDITY) {
                //相对湿度
                content += i + "." + "相对湿度" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_AMBIENT_TEMPERATURE) {
                //环境温度
                content += i + "." + "环境温度" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED) {
                //无标定磁场
                content += i + "." + "无标定磁场" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_GAME_ROTATION_VECTOR) {
                //无标定旋转矢量
                content += i + "." + "无标定旋转矢量" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_GYROSCOPE_UNCALIBRATED) {
                //未校准陀螺仪
                content += i + "." + "未校准陀螺仪" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_SIGNIFICANT_MOTION) {
                //特殊动作
                content += i + "." + "特殊动作" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_STEP_DETECTOR) {
                //步行检测
                content += i + "." + "步行检测" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_STEP_COUNTER) {
                //步行计数
                content += i + "." + "步行计数" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_STEP_COUNTER) {
                //步行计数
                content += i + "." + "步行计数" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR) {
                //地磁旋转矢量
                content += i + "." + "地磁旋转矢量" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == Sensor.TYPE_HEART_RATE) {
                //心跳速率
                content += i + "." + "心跳速率" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == 22) {//Sensor.TYPE_TILT_DETECTOR
                //倾斜检测
                content += i + "." + "倾斜检测" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == 23) {//Sensor.TYPE_WAKE_GESTURE
                //唤醒手势
                content += i + "." + "唤醒手势" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == 24) {//Sensor.TYPE_GLANCE_GESTURE
                //掠过手势
                content += i + "." + "掠过手势" + ":" + sensorList.get(i).getName() + "\n";
            } else if (sensorList.get(i).getType() == 25) {//Sensor.TYPE_PICK_UP_GESTURE
                //抬起手势
                content += i + "." + "抬起手势" + ":" + sensorList.get(i).getName() + "\n";
            } else {
                content += i + "." + sensorList.get(i).getType() + ":" + sensorList.get(i).getName() + "\n";
            }
        }
        tv_sensor.setText(content);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38322371/article/details/115298996