android 传感器必知必会 (上)
来源:互联网 发布:vb牛顿迭代法求平方根 编辑:程序博客网 时间:2024/05/12 16:25
现代的android设备已经不在是简单的通信或者web浏览平台。这些设备能够使用硬件传感器(一如加速计,陀螺仪,气压表)来作为人的感官补充。
检测物理环境属性的传感器为增加移动应用的用户体验提供了令人激动的创新机会
本文将介绍android中可用的传感器,并且如何用传感器管理器监视它们。
# 使用传感器和传感器管理器
传感器管理器用于管理android 设备上可用的硬件传感器,使用方法如下:
你并不会直接与传感器硬件交互,而是需要使用Sensor对象。Sensor对象描述了它代表的硬件传感器属性,包括传感器类型,名称,制造商,etc
sensor中还定义了一组常量,用于描述传感器类型,如下:
一如图中 第一个为光传感器,返回一个lux为单位的值,用于描述光的亮度。光传感器通常用于动态控制屏幕的亮度,其他类型可由读者自己阅读文档
# 虚拟传感器
通常,android传感器是彼此独立的工作的,每个传感器报告特定硬件得到的结果,而不应用任何过滤或者平滑处理。在一些情况中,使用虚拟传感器很有帮助,因为它们可以提供简化的,经过矫正的或者符合的数据,使用它们更易于在一些应用中使用
# 查找传感器
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); for(int i = 0;i < sensors.size();++i) { Log.d(TAG, sensors.get(i).getName()); }
# 返回特定的传感器
Sensor sensor = m_sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); if(sensor != null){ float power = sensor.getPower(); Log.d(TAG,sensor.getName() + "$power$" + power); }
如果所求传感器不存在 那么就会返回一个空指针
其中 sensor可以获得传感器一些相关参数
比如耗电量 最大工作范围之类的
# 监视传感器
为监视一个传感器,需要使用SensorEventListener
使用onSensorChanged方法监视传感器值。使用onAccuracyChanged方法相应传感器精度的变化
如下
其中对于onSensorChanged参数SensorEvent有四种用于描述一个传感器事件的属性:
第一个表示精确度(low,medium,high,unreliable)
第二个表示触发该事件的传感器对象
第三个表示传感器事件发生的事件,以纳秒为单位
第四个表示以检测到的新值的浮点类型数组,其含义后做表示
在onAccuracyChanged中,第二个参数表示传感器的精确度,其值可以为如下的常量
使用方式:
Sensor sensor = m_sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); if(sensor == null) return; m_sensorManager.registerListener( m_sensorEventListener, sensor, SensorManager.SENSOR_DELAY_NORMAL );
其中第三个为响应速度,android提供了很多个可供你选择的更新速率,为一下常量:
值得注意的是我们还是需要在应用程序不需要接受更新的时候,注销其监听器
比较好的做法就是在activity的onResume中注册,在onPause中进行注销
@Override public void onPause(){ super.onPause(); m_sensorManager.unregisterListener(m_sensorEventListener); }
# 解释传感器值
文档很清楚 不需我在解释,一如在加速度传感器中 0 1 2 分别代表 x y z 的加速度
以此类推
- android 传感器必知必会 (上)
- android 传感器必知必会(下)
- Pro Android学习笔记(一五五):传感器(5): 磁场传感器和方位(上)
- Pro Android学习笔记(一五五):传感器(5): 磁场传感器和方位(上)
- Android_开发 Android传感器(加速度传感器,磁场传感器,光线传感器,方向传感器)
- android 加速的传感器(重力传感器)
- Android之传感器(一)光照传感器
- Android之传感器(二)加速度传感器
- Android之传感器(三)方向传感器
- Android传感器(二):加速度传感器
- Android传感器(一):传感器列表
- Android传感器(三):方向传感器
- Android传感器(四):距离传感器
- Android传感器(五):线性加速度传感器
- Android传感器(六):光传感器
- Android传感器的使用(方向传感器,重力传感器)
- android传感器(2)
- android 传感器 (未完成)
- php时区 为什么两个语句才能起效 date_default_timezone_set ini_set('date.timezone
- hdu5064 Find Sequence 单调性dp
- exception in thread main brut.androlib.err.undefinedresobject resource spec : 0x01010462
- 简单解决java.lang.IllegalStateException: getOutputStream() has already been called for this
- 8.11(web doget方法乱码)
- android 传感器必知必会 (上)
- 排序算法——插入排序
- java学习笔记-----QQ项目-------对象流的使用
- Mahout的BreimanExample例子分析
- 数据结构实验之链表七:单链表中重复元素的删除
- 黑马程序员——对象与函数
- 完成请求后回到上一级页面
- python中的copy模块(浅复制和深复制)
- 黑马程序员——java复习总结——面向对象