传感器概述
传感器是第二代智能手机的重要标志之一。现在许多的手机和平板都内置了传感器(tv除外)。android的SDK支持许多的传感器有十几种,但是手机只是支持一部分。例如方向传感器(电子罗盘)和重力传感器(屏幕翻转)。
大概分为三类
- 动作传感器
- 环境传感器‘
- 位置传感器
动作传感器
这类传感器在三个轴(x,y,z)上测量加速度和旋转角度。包括如下几个传感器。
- 加速传感器
- 重力传感器
- 陀螺仪传感器
- 旋转向量传感器
环境传感器
- 湿度传感器’
- 光线传感器
- 温度传感器
位置传感器
- 方向传感器
- 磁力传感器
android sensor Framework
android SDK内置了android sensor Framework ,可以访问android设备内置的传感器,ASF提供了许多类和接口,可以帮助我们完后才那个许多工作。
- 确定android设备内置二等传感器
- 确定一个传感器的技术指标,例如测量范围,精度,制造商和精度
- 获取传感器传回来的数据
- 注册和注传感器监听事件,用于监听传感器的变化,通常回传的数据要通过这些监听器完成。
硬件传感器和软件传感器
ASF允许我们访问许多的传感器类型,有基于硬件的也有给予偶软件的,
硬件传感器是基于硬件的传感器,直接以芯片的形式嵌入到Android设备中,这些传感器从外部获取数据,例如加速传感器和磁场传感器。
软件传感器不是基于硬件的,传回的数据本质上基于对基于硬件传感器的二次加工,可能来源于一个或多个硬件传感器,也有可能使用了特定的算法处理了这些数据。
ASF支持的传感器
ASF中的主要类和接口
- Sensor Manager :用于创建Sonsor Service的实例。该类提供了很多用于访问和枚举传感器,注册和注销传感器饿方法。而且还提供了与传感器精度,扫描频率,校正有关的量。
- Sensor类:提供了一些用于获取传感器技术参数的方法。如版本和类型,生产商。
- SensorEvent类:创建传感器时间对象,时间可以传递与传感器有关的数据,类型,精度以及触发时间等。
- SensorEventListene接口:当出传感器的回传值或者精度变化时,系统会调用。
获取android设备支持的传感器实例
代码如下;
public class MainActivity extends Activity {
private TextView tvSensor;
private SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvSensor = (TextView) findViewById(R.id.tvSensor);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
List<Sensor> list = sensorManager.getSensorList(Sensor.TYPE_ALL);
for (Sensor sensor : list) {
tvSensor.append(sensor.getName()+"\n");
}
}
}
效果图: