Android传感器汇总让你知道你的手机支持多少种传感器设备

package com.example.android_sensor;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

/**
* 传感器总汇
*
* @author pengxiaolng
*
*         #define SENSOR_TYPE_ACCELEROMETER 1
*
*         加速度
*
* #define SENSOR_TYPE_MAGNETIC_FIELD 2
*
*         磁力
*
*         #define SENSOR_TYPE_ORIENTATION 3
*
*         方向
*
*         #define SENSOR_TYPE_GYROSCOPE 4
*
*         陀螺仪
*
*         #define SENSOR_TYPE_LIGHT 5
*
*         光线感应
*
*         #define SENSOR_TYPE_PRESSURE 6
*
*         压力
*
*         #define SENSOR_TYPE_TEMPERATURE 7
*
*         温度
*
*         #define SENSOR_TYPE_PROXIMITY 8
*
*         距离
*
*         #define SENSOR_TYPE_GRAVITY 9
*
*         重力
*
*         #define SENSOR_TYPE_LINEAR_ACCELERATION 10
*
*         线性加速度
*
*         #define SENSOR_TYPE_ROTATION_VECTOR 11
*
*         旋转矢量
*
*         #define Sensor_TYPE_RELATIVE_HUMIDITY 12 相对湿度
*
*         传感器 类型 说明 常见用途 TYPE_ACCELEROMETER 硬件
*         测量施于设备的物理三维方向上(x、y和z轴)的加速度,包括重力,单位为m/s2。 运动检测(晃动、倾斜等)
*         TYPE_AMBIENT_TEMPERATURE 硬件 测量周围环境的温度,单位为摄氏度(°C)。参见下文。 监测气温
*         TYPE_GRAVITY 软件或硬件 测量施于设备的物理三维方向上(x、y和z轴)的重力加速度,单位为m/s2 。
*         运动检测(晃动、倾斜等) TYPE_GYROSCOPE 硬件 测量设备围绕每个物理三维方向(x、y和z轴)的转动角速度,单位为rad/s
*         。 转动检测(旋转、转动等) TYPE_LIGHT 硬件 测量周围环境的光照强度(照度),单位为lx。 控制屏幕亮度
*         TYPE_LINEAR_ACCELERATION 软件或硬件
*         测量施于设备的物理三维方向上(x、y和z轴)的加速度,但不包括重力,单位为m/s2。 监测某一维轴线上的加速度
*         TYPE_MAGNETIC_FIELD 硬件 测量周围物理三维方向(x、y和z轴)的地球磁场,单位为μT。 创建指南针
*         TYPE_ORIENTATION 软件 测量围绕物理三维方向(x、y和z轴)的旋转角度。自API level
*         3开始,利用重力传感器和地磁传感器,你可以用 getRotationMatrix() 方法读取倾角矩阵和旋转矩阵。 检测设备的方位
*         TYPE_PRESSURE 硬件 测量周围大气压力,单位为hPa或mbar。 监测气压的变化 TYPE_PROXIMITY 硬件
*         测量附近的物体与设备屏幕间的距离,单位为cm。此传感器的典型应用,是可以检测手持设备是否被人拿起来并靠近耳朵。 通话时确定电话的位置
*         TYPE_RELATIVE_HUMIDITY 硬件 测量周围环境的相对湿度,单位为百分比(%)。 监测结露点、绝对湿度和相对湿度。
*         TYPE_ROTATION_VECTOR 软件或硬件 根据设备旋转向量的三个参数测量设备的方向。 运动检测和转动检测
*         TYPE_TEMPERATURE 硬件 测量设备的温度,单位是摄氏度(°C)。这个传感器的实现因设备的差异而各不相同,并自API
*         Level 14开始由 TYPE_AMBIENT_TEMPERATURE 代替。
*
*/
public class MainActivity extends Activity {

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                // 准备显示信息的UI组建
                final TextView tx1 = (TextView) findViewById(R.id.TextView01);

                // 从系统服务中获得传感器管理器
                SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

                // 从传感器管理器中获得全部的传感器列表
                List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);

                // 显示有多少个传感器
                tx1.setText("经检测该手机有" + allSensors.size() + "个传感器,他们分别是:\n");

                // 显示每个传感器的具体信息
                for (Sensor s : allSensors) {

                        String tempString = "\n" + "  设备名称:" + s.getName() + "\n"
                                        + "  设备版本:" + s.getVersion() + "\n" + "  供应商:"
                                        + s.getVendor() + "\n";

                        switch (s.getType()) {
                        case Sensor.TYPE_ACCELEROMETER:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 加速度传感器accelerometer" + tempString);
                                break;
                        case Sensor.TYPE_GYROSCOPE:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 陀螺仪传感器gyroscope" + tempString);
                                break;
                        case Sensor.TYPE_LIGHT:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 环境光线传感器light" + tempString);
                                break;
                        case Sensor.TYPE_MAGNETIC_FIELD:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 电磁场传感器magnetic field" + tempString);
                                break;
                        case Sensor.TYPE_ORIENTATION:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 方向传感器orientation" + tempString);
                                break;
                        case Sensor.TYPE_PRESSURE:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 压力传感器pressure" + tempString);
                                break;
                        case Sensor.TYPE_PROXIMITY:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 距离传感器proximity" + tempString);
                                break;
                        case Sensor.TYPE_TEMPERATURE:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 温度传感器temperature" + tempString);
                                break;
                        case Sensor.TYPE_GRAVITY:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 重力传感器gravity" + tempString);
                                break;
                        case Sensor.TYPE_LINEAR_ACCELERATION:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 线性加速度传感器linearacceleration" + tempString);
                                break;
                        case Sensor.TYPE_ROTATION_VECTOR:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 旋转矢量传感器rotation_vector" + tempString);
                                break;
                        case Sensor.TYPE_RELATIVE_HUMIDITY:
                                tx1.setText(tx1.getText().toString() + s.getType()
                                                + " 周围环境相对湿度传感器relative_humidity" + tempString);
                                break;
                        default:
                                tx1.setText(tx1.getText().toString() + s.getType() + " 未知传感器"
                                                + tempString);
                                break;
                        }
                }

        }

}

你可能感兴趣的:(Android传感器汇总让你知道你的手机支持多少种传感器设备)