资讯详情

Android-传感器

Android-传感器

1.传感器的定义:物理设备或生物器官可以探测和感受外部信号和物理条件(如光、热、 湿度)或化学组成(如烟雾),并将探知的信息传递给其他的设备或者器官。 2.传感器类型:传感器可以从不同的角度划分,转换原理(传感器工作的基本物理或化学效应)、用途、输出信号、生产材料和工艺等。一般按工作原理分为物理传感器和化学传感器两类。手机上的传感器基本都是物理传感器,手机上的传感器如下:

1.Android常用传感器

  • 方向传感器(Orientation sensor)
  • 加速感应器(Accelerometer sensor)
  • 陀螺仪传感器(Gyroscope sensor)
  • 磁场传感器(Magnetic field sensor)
  • 距离传感器(Proximity sensor)
  • 光线传感器(Light sensor)
  • 气压传感器(Pressure sensor)
  • 温度传感器(Temperature sensor)
  • 重力感应器(Gravity sensor,Android 2.3引入
  • 线性加速传感器(Linear acceleration sensor ,Android 2.3引入)
  • 旋转矢量传感器(Rotation vector sensor,Android 2.3)
  • 相对湿度传感器(Relative humidity sensor,Android 4.0)
  • 近场通信(NFC)传感器(Android 2.3引入),NFC与其他不同,它具有读写功能。

用传感器开发

1.传感器的开发首先需要获取传感器的一些信息。获取信息需要以下步骤

  • 获取传感器:Android提供了一个sensorManager管理器一类,管理器可以获得哪些传感器sensorManager对象代码如下:
SensorManager sm = (sensorManager)getSystemService(SENSOR_SERVICE); 
  • 通过传感器对象列表获取传感器对象列表sensorManager管理器的getSensorList()方法,可以获取传感器对象列表,具体代码如下:
List<Sensor> allSensor  = sm.getSensorList(Sensor.TYPE_ALL); 
  • 循环获取Sensor对象,然后调用相应的方法获取传感器的相关信息,具体代码如下
for(Sensor s:allSensor  ){ 
         sensor.getName();                                              // 获取传感器名称 sensor.getType();                                              //获取传感器类型 sensor.getVendor();                                            ///获得传感器供应商 sensor.getVersion();                                           ////获得传感器的版本 sensor.getResolution();                                        //获得精度值 sensor.getMaxmumRange();                                       //获得最大范围 sensor.getPower()                                              /////使用传感器时耗电 

以上步骤获取传感器信息

2.获取传感器传回的数据

  • 通过调用Context的getSystemServic具体代码如下
SensorManager sm = (sensorManager)getSystemService(SENSOR_SERVICE); 
  • 调用SensorManager 对象的getDefaultSensor方法,获取指定类型的传感器,例如这里使用光线传感器,具体代码:
Sensor mSensorOrientation = sm.getDefaultSensor(Sensor.TYPE_LIGHT); 
  • 通过调用传感器注册监控事件sensorManager对象的registerListener()注册监控事件的方法如下
<code>ms.registerListener(mContext,mSensorOrientation,andriod:hardware.SensorManager .SENSOR_DELAY_UI);</code> 

参数说明: listener:通过监控传感器事件的监控器SensorEventListener接口来完成 sensor:传感器对象 rate:指定获取传感器数据的频率

  • SENSOR_DELAY_FASTEST——延时:0ms
  • SENSOR_DELAY_GAME——延时:20ms
  • SENSOR_DELAY_UI——延时:60ms
  • SENSOR_DELAY_NORMAL——延时:200ms/li>

实现 SensorEventListener接口,重写onSensorChanged和onAccuracyChanged的方法。 ①:onSensorChanged(SensorEvent event);该方法在传感器的值发生改变的时候调用,其参数是一个SensorEvent 对象,通过该对象的values属性可以获取传感器的值,该值是一个数组,该变量最多有三个元素,而且传感器不同,对应元素代表的含义也不同 ②:onAccuracyChanged(Sensor sensor , int accuracy);当传感器的进度发生改变时会回调, 参数说明: sensor:传感器对象 accuracy:表示传感器新的精度

  • 具体代码如下
@Override
public void onSensorChanged(SensorEvent event){ 
        
final float[] _Date = event.values;
this.mService.onSensorChanged(_Date[0],_Date[1],_Date[2]);
}
@Override
public void onAccuracyChanged(Sensor sensor , int accuracy){ 
        
}
  • 使用完传感器后对监听事件取消注册,具体代码如下
ms.registerListener(mContext,mSensorOrientation,andriod:hardware.SensorManager .SENSOR_DELAY_UI);

标签: android设备传感器相关android传感器类型3

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台