Introdução aos tipos de sensor no Android

Falando em sensores, estamos mais familiarizados com o sensor de gravidade e o sensor de luz do telefone celular. Como muitos de nós percebemos a rotação do telefone celular e a tela apaga quando está perto do ouvido ao fazer uma chamada, tudo isso se deve ao sensor. Hoje irei apresentar os tipos de sensores no Android e explicar como obter os sensores suportados pelo celular atual.

1. Tipos de sensores no Android

número de série Tipo de sensor de sensor Nome do sensor Descrição
1 TYPE_ACCELEROMETER Aceleração Freqüentemente usado para a função de agitação
2 TYPE_MAGNETIC_FIELD campo magnético  
3 TYPE_ORIENTATION direção

Obsoleto, substituído pelo método getOrientation

4 TYPE_GYROSCOPE Giroscópio Usado para detectar a rotação e inclinação do telefone
5 TYPE_LIGHT Leve Usado para sentir a intensidade da luz na frente do telefone
6 TYPE_PRESSURE pressão Usado para detectar a pressão do ar
7 TYPE_TEMPERATURE temperatura Obsoleto, substituído pelo tipo 13
8 TYPE_PROXIMITY distância  
9 TYPE_GRAVITY gravidade  
10 TYPE_LINEAR_ACCELERATION Aceleração linear  
11 TYPE_ROTATION_VECTOR Vetor de rotação  
12 TYPE_RELATIVE_HUMIDITY Humidade relativa  
13 TYPE_AMBIENT_TEMPERATURE Temperatura ambiente  
14 TYPE_MAGNETIC_FIELD_UNCALIBRATED Sem campo magnético calibrado  
15 TYPE_GAME_ROTATION_VECTOR Vetor de rotação não calibrado  
16 TYPE_GYROSCOPE_UNCALIBRATED Giroscópio não calibrado  
17 TYPE_SIGNIFICANT_MOTION Ação especial  
18 TYPE_STEP_DETECTOR Detecção de caminhada Um evento é disparado toda vez que o usuário dá um passo
19 TYPE_STEP_COUNTER Contagem de caminhada Registre o número de etapas após a ativação
20 TYPE_GEOMAGNETIC_ROTATION_VECTOR Vetor de rotação geomagnética  
21 TYPE_HEART_RATE Frequência cardíaca Uso de dispositivos vestíveis, como pulseiras
22 TYPE_TILT_DETECTOR Detecção de inclinação  
23 TYPE_WAKE_GESTURE Gesto de acordar  
24 TYPE_GLANCE_GESTURE Gesto de deslizar  
25 TYPE_PICK_UP_GESTURE Gesto de pegar  

2. Obtenha um exemplo de todos os tipos de sensores do telefone celular atual

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);
    }
}

 

Acho que você gosta

Origin blog.csdn.net/weixin_38322371/article/details/115298996
Recomendado
Clasificación