您的位置:首页 > 移动开发 > Android开发

Android三类传感器-动作传感器-位置传感器-环境传感器

2015-11-20 16:25 429 查看
Android的传感器主要分为三类:动作传感器,位置传感器和环境传感器。

动作传感器

Android的动作传感器主要在XYZ轴上测量加速度和旋转角度,主要有以下几种:

加速传感器(Accelerameter)

陀螺仪传感器(Gyroscope)

重力传感器(Gravity)

旋转向量传感器(Rotational vetor)

在获取某传感器参数之前,我们需要查看ANDROID设备是否支持该传感器,下面首先演示如何获取一个设备所支持的所有传感器。

我们需要一个SensorManager类来获取传感器的相关信息,并把它显示在TextView当中。

SensorManager sensorManager= (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);
for (Sensor sensor:sensors) {
tv_sensors.append(sensor.getName() + "\n");
}


动作传感器–以加速度传感器为例

要监听传感器的回传数据,需要实现SensorEventListener接口,并重写方法onSensorChanged(),onAccuracyChanged(),和重写Fragment类中的onResume()和onPause()。

首先在onResume()中注册要监听的传感器类型(以加速度传感器为例)

@Override
public void onResume() {
super.onResume();
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
}


SENSOR_DELAY_FASTEST表示监听数据的速度很快。

在onPause()销毁该传感器

@Override
public void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}


在onSensorChanged()中写捕捉到传感器后的动作

@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
String string_accelerameter = "加速度X:" + event.values[0] + "/|Y:" + event.values[1] + "/|Z:" + event.values[2];
tv_accelerameter.setText(string_accelerameter);
break;
case Sensor.TYPE_ROTATION_VECTOR:
String string_TYPE_ROTATION_VECTOR = "X:" + event.values[0] + "/|Y:" + event.values[1] + "/|Z:" + event.values[2];
Log.v("TYPE_ROTATION_VECTOR", string_TYPE_ROTATION_VECTOR);
break;
}
}


位置传感器

位置传感器常用的有3个:

方向传感器TYPE_ORIENTATION,

磁场传感器TYPE_MAGNETOMETER

邻近传感器TYPE_PROXIMITY。

其中邻近传感器使用最多,即在接听电话时判断人脸与屏幕的距离从而判断是否熄灭屏幕以防止误触。

方向传感器,磁场传感器都有3个返回值(event.value[0],event.value[1],event.value[2]),而邻近传感器只有一个返回值(event.value[0])。

设置位置传感器的方法与动作传感器相同,即在onResume()方法内注册传感器,并在onSensorChanged()监听返回值。

在方向传感器中,event.value[0]表示绕着Z轴(上下)旋转的角度,如果Y轴正对北方, 返回值为0;如果Y轴正对东方, 返回值为90,如果Y轴正对南方, 返回值为180,如果Y轴正对西方, 返回值为270。

event.value[1]表示绕着Y轴(前后)旋转的角度。

event.value[2]表示绕着X轴(左右)旋转的角度。

环境传感器

ANDROID APIs中提供了4个环境传感器,分别为

温度TYPE_AMBIENT_TEMPERATURE(℃),

压力TYPE_PRESSURE(hPa),

光线TYPE_LIGHT(lx),

湿度TYPE_RELATIVE_HUMIDITY(RH).

手机最常用的是光线,这些传感器都只有一个返回值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 传感器