Android传感器的应用开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android传感器的应用开发
整理:苏老师
一、传感器的获取
1、Android所有的传感器都归传感器管理器SensorManager 管理,获取传感器管理器的方法:
String name = Context.SENSOR_SERVICE;
SensorManager sensorManager = (SensorManager)getSystemService(name);
2、现行Android版本支持的传感器有:
3、通过传感器管理器获取传感器对象的方法:
(1)、获取一个传感器
Sensor defaultGyroscope =
sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
(2)、获取多个传感器,获取结果是传感器集合
List
sensorManager.getSensorList(Sensor.TYPE_PRESSURE); //限定某种传感器类型或者不限传感器类型获取传感器对象列表:
List
4、传感器对象提供获取其传感器信息的方法:
二、传感器事件的常规应用步骤
1、获取传感器管理器对象、传感器对象
// 获取传感器管理器
SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// 获取加速传感器
Sensor acceleromererSensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
2、定义传感器事件
// 定义传感器事件监听器
SensorEventListener acceleromererListener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
//传感器数据变动事件
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
//x、y、z变量是从加速传感器获得的数据
//……
//……
}
};
3、注册(应用)传感器事件
//在传感器管理器中注册监听器
sm.registerListener(acceleromererListener,
acceleromererSensor, SensorManager.SENSOR_DELAY_NORMAL);
三、传感器事件参数变量
onSensorChanged方法只有一个SensorEvent类型的参数event,其中SensorEvent类有一个values变量非常重要,该变量的类型是float[]。但该变量最多只有3个元素,而且根据传感器的不同,values变量中元素所代表的含义也不同。
1、方向传感器
values[0]:该值表示方位,也就是手机绕着Z轴旋转的角度。0表示北(North);90表示东(East);180表示南(South);270表示西(West)。
values[1]:该值表示倾斜度,或手机翘起的程度。当手机绕着X轴倾斜时该值发生变化。values[1]的取值范围是-180≤values[1]≤180。
values[2]:表示手机沿着Y轴的滚动角度。取值范围是-90≤values[2]≤90。
2、加速传感器
该传感器的values变量的3个元素值分别表示X、Y、Z轴的加速值。例如,水平放在桌面上的手机从左侧向右侧移动,values[0]为负值;从右向左移动,values[0]为正值。
X轴的方向是沿着屏幕的水平方向从左向右。如果手机不是正方形的话,较短的边需要水平放置,较长的边需要垂直放置。
Y轴的方向是从屏幕的左下角开始沿着屏幕的垂直方向指向屏幕的顶端。
Z轴的方向是从手机里指向天空。
3、重力感应器
加速传感器的类型常量是Sensor.TYPE_GRAVITY。重力传感器与加速传感器使用同一套坐标系。values数组中三个元素分别表示了X、Y、Z轴的重力大小。
4、光线传感器
光线传感器的类型常量是Sensor.TYPE_LIGHT。values数组只有第一个元素(values[0])有意义。表示光线的强度。最大的值是120000.0f。
5、陀螺仪传感器
陀螺仪传感器的类型常量是Sensor.TYPE_GYROSCOPE。values数组的三个元素表示的含义如下:
values[0]:延X轴旋转的角速度。
values[1]:延Y轴旋转的角速度。
values[2]:延Z轴旋转的角速度。
当手机逆时针旋转时,角速度为正值,顺时针旋转时,角速度为负值。