Android中的各种传感器

原创 2016年06月01日 21:42:04

1.首先Android中为我们提供了Android  Sensor  framework可以用来访问当前设备中内置的各种传感器,

ASF为我们提供了很多类和接口来帮助我们完成有关传感器的任务,其中主要的类和接口有:

SensorManager类:用于创建sensor service的实例。该类提供了很多用于访问和枚举传感器,注册和注销传感器 监听器的方法。

而且还提供了与传感器精度、扫描频率、校 正有关的常量。


Sensor类:提供了一些用于获取传感器技术参数的方法。如版本、类型、生产商等。


SensorEvent类:系统使用该类创建传感器事件对象。该对象可以提供与传感器事件有关的信息。


传感器事件对象包括的信息有原始的传感器回传数据、传感器类型、数据的 精度以及触发事件的时间。


SensorEventListener接口:该接口包含两个回调方法,当传感器的回传值或精度发生变化时,系统会调用这两个 回调方法。

2.ASF中支持的传感器主要有以下这些:


TYPE_ACCELEROMETER:加速传感器(硬件传感器)

TYPE_AMBIENT_TEMPERATURE:温度传感器(硬件传感器)

TYPE_GRAVITY:重力传感器(硬件或软件传感器)

TYPE_GYROSCOPE:陀螺仪传感器(硬件传感器)

TYPE_LIGHT:光线传感器(硬件传感器)

TYPE_LINEAR_ACCELERATION:线性加速传感器(硬件或软件传感器)

TYPE_MAGNETIC_FIELD:磁场传感器(硬件传感器)

TYPE_ORIENTATION:方向传感器(软件传感器),数据来自重力和磁场传感器

TYPE_PRESSURE:压力传感器(硬件传感器)

TYPE_PROXIMITY:临近传感器(硬件传感器)

TYPE_RELATIVE_HUMIDITY:湿度传感器(硬件传感器)

TYPE_ROTATION_VECTOR:旋转向量传感器(硬件或软件传感器)

TYPE_TEMPERATURE:温度传感器(硬件传感器),从Android4.0(API Level = 14)开始被TYPE_AMBIENT_TEMPERATURE取代。

3.传感器管理器的获取:

1、Android所有的传感器都归传感器管理器 SensorManager 管理,获取传感器管理器的方法: 

       String name = Context.SENSOR_SERVICE; 

       SensorManager sensorManager = (SensorManager)getSystemService(name); 

2、通过传感器管理器获取传感器对象的方法: 

(1)、获取一个传感器        

Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); 

(2)、获取多个传感器,获取结果是传感器集合       

   List<Sensor> pressureSensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);

 //限定某种传感器类型 或者不限传感器类型获取传感器对象列表: 

       List<Sensor> allSensors = sensorManager.getSensorList(Sensor.TYPE_ALL); 

3.传感器中的常用方法:


4、传感器事件的常规应用步骤

1)首先获得传感器管理器,再获得具体的传感器对象

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

//xyz变量是从加速传感器获得的数据 ,也就是三个坐标轴上的数据,注意方向传感器比较特殊,

values[0]表示Z轴上的数据,values[1]和values[2]分别表示X轴和Y轴上的数据,其他的就都是[0]、[1]、[2]分别表示X,Y,Z轴的数据

} 

}; 

3) 注册(应用)和注销传感器事件

一般是在onResume()方法里面注册传感器,而在onStop()方法里面注销传感器,因为这样就可以在跳到另一个界面时停止该传感器,在不用时减少耗电,

4)关于传感器事件参数变量的说明

        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]的取值范围 -180values[1]180 

values[2]:表示手机沿着Y轴的滚动角度。取值范围是-90values[2]90

(2)加速传感器 

该传感器的values变量的3个元素值分别表示XYZ轴的加速值。例如,水平放在桌面上的手机从左侧向右侧移动,values[0] 为负值;从右向左移动,values[0]为正值。 

X轴的方向是沿着屏幕的水平方向从左向右。如果手机不是正方形的话,较短的边需要水平放置,较长的边需要垂直放置。 

Y轴的方向是从屏幕的左下角开始沿着屏幕的垂直方向指向屏幕的顶端。 Z轴的方向是从手机里指向天空。 

(3)重力传感器 

重力传感器的类型常量是Sensor.TYPE_GRAVITY。重力传感器与加速传感器使用同一套坐标系。values数组中三个元素分别表 示了XYZ轴的重力大小。 

(4)光线传感器 

光线传感器的类型常量是Sensor.TYPE_LIGHTvalues数组只有第一个元素(values[0])有意义。表示光线的强度。最大的值 120000.0f 

(5)陀螺仪传感器 

陀螺仪传感器的类型常量是Sensor.TYPE_GYROSCOPEvalues数组的三个元素表示的含义如下: 

values[0]:延X轴旋转的角速度。 values[1]:延Y轴旋转的角速度。 values[2]:延Z轴旋转的角速度。 

当手机逆时针旋转时,角速度为正值,顺时针旋转时,角速度为负值。






版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明地址!

Android 传感器简介

Android 传感器类型(Android 4.4)目前 Android 设备支持的传感器类型如下: TYPE_ACCELEROMETER 加速度传感器又叫 G-sensor,该数值包含地心引力的影响...
  • zhaoyongchun2011
  • zhaoyongchun2011
  • 2015年04月09日 17:23
  • 771

Android 环境传感器初探

Android 中的环境传感器有如下几种(来自于 Sensor): TYPE_LIGHT 光传感器 TYPE_PROXIMITY 接近传感器 TYPE_PRESSURE 气压传感器 TYPE_RELA...
  • zhaoyongchun2011
  • zhaoyongchun2011
  • 2015年04月20日 14:44
  • 698

使用android传感器自己编写温度计,湿度计 支持android5.0

编写温湿度计的原理很简单,就是获取温度,湿度传感器的数据,和其它的传感器的使用方法是一样的(前提是手机要有温度,湿度传感器)   首先是获取传感器管理器:   (SensorManager) ge...
  • redstarofsleep
  • redstarofsleep
  • 2015年05月06日 13:25
  • 5170

传感器系列之4.5温湿度传感器

4.5 温湿数据采集实验一、实验目的 了解智能传感器DHT11的原理与应用 掌握智能传感器DHT11的编程与操作方法 理解微处理器与湿度传感器DHT11之间的通讯 二、实验材料 具有USB 串口通讯的...
  • u010570551
  • u010570551
  • 2016年05月29日 12:40
  • 10537

基于 Arduino 的温度+湿度传感器

arduino
  • cuit
  • cuit
  • 2015年05月07日 00:03
  • 5233

基于DHT11温湿度传感器的Android硬件访问服务的简单实现(一)

一、实现的功能 以DHT11温湿度传感器为例,实现一个简单的Android硬件访问服务。实现的功能是:通过编写Android APP来读取温湿度的数值并将它们显示出来。 二、基本的开发环境 PC...
  • TECH_PRO
  • TECH_PRO
  • 2017年04月21日 07:46
  • 784

Android传感器使用大全

今天学习了传感器的使用,特意来写份博客,来记录学习成果! Android常用传感器有9种,分别为:加速度传感器,方向传感器,陀螺仪传感器,磁场传感器,重力传感器,线性加速度传感器,温度传感器,...
  • qq_31609983
  • qq_31609983
  • 2016年04月15日 20:48
  • 1586

Android传感器系列介绍-刘宇

Android官方给我们提供一套Android sensor framework,俗称Android传感器框架,简称ASF。传感器分为动作传感器、位置传感器、环境传感器。由于传感器较多,使用过程差不多...
  • liuyu973971883
  • liuyu973971883
  • 2016年08月20日 18:11
  • 742

Android传感器简单介绍

Android手机中存在好多种传感器,Android系统提供了接口可以将传感器的数据传送给我们,我们可以用获取到的数据做很多有趣的事,接下来我们就来学习一下最常用的三种传感器,光照传感器、加速度传感器...
  • bingjianIT
  • bingjianIT
  • 2016年09月11日 11:31
  • 461

Android传感器框架分析

Android传感器框架分析
  • guo343310267
  • guo343310267
  • 2015年10月27日 18:02
  • 1600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中的各种传感器
举报原因:
原因补充:

(最多只允许输入30个字)