Android传感器汇总让你知道你的手机支持多少种传感器设备
2013-08-30 10:43
435 查看
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;
}
}
}
}
相关文章推荐
- 如何判断android 手机支持哪些传感器
- 看看你的android设备里有多少传感器?
- 获取Android手机设备中的传感器
- 如何获取Android设备所支持的传感器种类
- Android获得当前设备支持的所有传感器
- Android移动开发-获取Android移动设备上支持的传感器的实现
- 据报道,微软正考虑支持Windows手机或Android的多系统设备
- Android获得当前设备支持的所有传感器
- iOS UIDevice设备信息,传感器设置,横竖屏判断操作,手机电池操作
- 【转】让iframe在iOS设备手机浏览器上支持滚动
- 手机淘宝搜索排名的那些规则你知道多少?
- Android之获取设备的型号和手机厂商
- Make ADB To Support Android Devices(如何使ADB在Linux下支持Android设备的udev规则配置)
- IOS判断手机设备是否支持照相功能
- 红米手机调试android应用出现问题汇总
- 【手机变身无线音箱-WIFI流媒体传输】--音乐在PC和手机间双向播放-详解Android DLNA使用-使用DLNA实现不同设备间媒体共享
- github上万颗star的21个JAVA(19个Android相关)开发框架,知道多少,用过多少(截止2016年12月17日)
- ADB server didn't ACK fail to start daemon以及所有的eclipse无法识别android设备汇总
- 判断android设备是否支持多点触控
- 谷歌反对Android设备支持多窗口 三星一意孤行