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