(1)我介绍的是光线感应器(LightSensor),所谓的光线感应器就是可以感应光线强度的一个设备,而我们对他的开发一般是通过感应光线强度的变化。因为这篇文章是android常用的硬件感应器为主题的,那么我就来介绍怎样在android系统使用光线感应器,我说的真机,因为模拟并没有能够模拟出感应器的效果。。

(2)首先android通过一个SensorManager来管理各种感应器,而获得这个管理器的引用必须通过(SensorManager)getSystemService(Context.SENSOR_SERVICE);这句代码来获得。

(3)在android系统中所有的感应器都属于Sensor类的一个实例,并没有继续细分下去,通过这次的主题,你也会发现android对于感应器的处理几乎是一摸一样的。既然都是Sensor类,那么怎么获得相应的感应器呢?这时就需要通过SensorManager来获得,我们通过这句代码来确定我们要获得感应器类型.
sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);很显然我获得的是光线感应器的引用.

(4)既然已经获得相应的感应器的引用,那么我们的怎么用呢?在第一部分我就说到了我们通过感应光线强度的变化,注意是‘变化’。有些人获取已经明白了,既然是变化,我们肯定需要通过监听他,来获得变化。因为我们就需要给我们的感应器加个监听,android提供了两个监听一个是SensorEventListener,另一个SensorListener,因为后者已经在androidAPI上显示过时了,那么我们就不介绍他了。

(5)知道了有哪些感应器监听,那么我们就来介绍下如何给感应器加监听,这时又需要SensorManager,他就是感应器的保姆,很多关于感应器的部分都要靠他。

SensorManager关于加监听的方法有几个:

registerListenr(SensorListenerlistenr,int sensors,int rate):已过时
registerListenr(SensorListenerlistenr,int sensors):已过时
registerListenr(SensorEventListenerlistenr,Sensor sensors,int rate)
registerListenr(SensorEventListenerlistenr,Sensor sensors,int rate,Handlerhandler)因为SensorListener已经过时,那么相应的注册方法,也就过时了。

说下各个参数的意义:

Listener:相应监听器的引用
Sensor:相应的感应器引用
Rate:感应器的反应速度,这个必须是系统提供4个常量之一的:
SENSOR_DELAY_NORMAL:匹配屏幕方向的变化
SENSOR_DELAY_UI:匹配用户接口
SENSOR_DELAY_GAME:匹配游戏
SENSOR_DELAY_FASTEST.:匹配所能达到的最快

Handler:

(6)要注意的是在android中注册了感应器,也就启用了他,而使用感应器是相当耗电的,这些是为什么感应器的应用没有那么泛滥的主要原因,所以我们必须在我们不需要他的时候,关掉他。怎么关闭呢?注册是启用,那么注销就是关闭了。Android有以下一些注销方法:
unregisterListener(SensorEventListenerlistener);
unregisterListener(SensorEventListenerlistener,Sensor sensor);
相应的参数作用,我相信大家也就知道了。

(7)知道开和关,那么现在就来介绍具体的用!也就是关于SensorEventListener的实现,实现这个监听器必须实现两个方法:一个是onAccuracyChanged(Sensor sensor, intaccuracy),另一个是onSensorChanged(SensorEventevent)。第一个方法是反应速度变化的方法,也就是第五部分的rate变化时的方法.另一个是感应器的值变化的相应的方法。但是需要注意的是,这两个方法是响应的是一起,就是说当感应器发生变化,两个方法都会一起被调用。

下面我介绍下:accuracy的值,也就是那四个常量相应的整数:

SENSOR_DELAY_NORMAL:3
SENSOR_DELAY_UI:2
SENSOR_DELAY_GAME:1
SENSOR_DELAY_FASTEST.:0

现在介绍SensorEvent类:

它有四个成员变量:


Accuracy:精确值
Sensor:发生变化的感应器
Timestamp:发生的时间,单位是纳秒
Values:发生变化后的值,这个是一个长度为3数组

光线感应器只需要values[0]的值,其他两个都为0.而values[0]就是我们开发光线感应器所需要的,单位是:lux照度单位

http://www.eoeandroid.com/thread-79733-1-1.html


更多相关文章

  1. 【代码】android 通过GPS获取用户地理位置并监听位置变化
  2. gallery 显示文字
  3. android Configuration详解
  4. android 指南针
  5. android 监听系统时区变化,日期变化,时间变化
  6. Android(安卓)display架构分析(七-2)
  7. Android(安卓)native/C/C++ 监控文件夹变化
  8. Android(安卓)EditText属性介绍及监听内容变化
  9. android 调色板小练习

随机推荐

  1. [转]android jni层binder使用/进程通信实
  2. Android(安卓)Java 与 C++ 调用过程中的
  3. How is android.Manifest.class created?
  4. 将网页嵌入到android应用中
  5. Service入门(一)——startService、stopSer
  6. Android(安卓)数据库的问题
  7. Android(安卓)Adb Analyse
  8. Android中关于路径
  9. Android: How To Decode ProGuard’s Obf
  10. java.io.StreamCorruptedException: inva