Sensor传感器相关的方法以及使用套路

从2中的例子我们可以大概地总结下获取Sensor传感器以及获取传感器相关的一些信息流程如下:

1)Sensor传感器的相关方法

Step 1:获得传感器管理器

SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); 
  • Step 2:获得设备的传感器对象的列表
List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
  • Step 3:迭代获取Sensor对象,然后调用对应方法获得传感器的相关信息:
for(Sensor s:allSensors){sensor.getName();   //获得传感器名称sensor.getType();     //获得传感器种类sensor.getVendor();    //获得传感器供应商sensor.getVersion();    //获得传感器版本sensor.getResolution();  //获得精度值sensor.getMaximumRange(); //获得最大范围sensor.getPower();        //传感器使用时的耗电量
}

2)传感器的使用套路

一般我们是很少说直接去获取Sensor,然后获取上面这些信息的!因为这没什么大的作用,我们更多的时候是去获取传感器采集到的数据,比如获取当前的大气压,或者方向传感器三个角的值,或者陀螺仪的值这样~而大部分的传感器数据采集都是下面的一个套路:

~Step 1:获得传感器管理器:

SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); 

~Step 2:调用特定方法获得需要的传感器:

比如这里获取的是方向传感器,想获得什么传感器自己查API~:

Sensor mSensorOrientation = sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);

~Step 3:实现SensorEventListener接口,重写onSensorChanged和onAccuracyChanged的方法!

onSensorChanged:当传感器的值变化时会回调

onAccuracyChanged:当传感器的进度发生改变时会回调

@Override
public void onSensorChanged(SensorEvent event) {final float[] _Data = event.values;this.mService.onSensorChanged(_Data[0],_Data[1],_Data[2]);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}

我们一般获取传感器数据的来源就是这个SensorEvent,这个类中有一个values的变量,类型是Float[],该变量最多有只有三个元素,而且传感器不同,对应元素代表的含义也不同,比如方向传感器中第一个元素是方位角的值,而气压传感器中第一个值则是气压值!

~Step 4:SensorManager对象调用registerListener注册监听器:

<code>ms.registerListener(mContext, mSensorOrientation, android.hardware.SensorManager.SENSOR_DELAY_UI);
</code>

方法也很简单,对应的参数:上下文对象Sensor传感器对象,以及传感器的延时时间的精度密度,有四个可选值:

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

当然低延时意味着更频繁的检车,更意味着更多的电量消耗,如果不是要求精度非常高的建议别使用太高精度的,一般用第三个较多~自己衡量衡量吧~

~Step 5:监听器的取消注册:

用完就放,一个很好的习惯,一般我们可以把他写到Activity或者Service的销毁方法中:

ms.registerListener(mContext, mSensorOrientation, android.hardware.SensorManager.SENSOR_DELAY_UI);

好的,套路非常简单~

文章出处:www.runoob.com/w3cnote/android-tutorial-sensor1.html

Sensor传感器相关的方法以及使用套路相关推荐

  1. Android Sensor 传感器总结

    ref:https://www.jianshu.com/p/8440a5897944 https://developer.android.google.cn/guide/topics/sensors/ ...

  2. android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  3. android开发中磁场传感器,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  4. 四旋翼飞行器平衡传感器数据 处理方法探讨

    四旋翼飞行器平衡传感器数据 处理方法探讨 [摘要]四旋翼飞行器的制作与研究日渐火热,而且其应用价值日渐凸显,当今四旋翼飞行器大都使用飞控板控制,其优点是操作简单,稳定性比较好,但好多的复杂功能无法自定 ...

  5. 超声波传感器四大检测方法详解

    随着电子.微电子技术的发展,传感器的发展也是日新月异,人们在生产生活中对传感器的应用较多,类型是越来越多例如:无线传感器.雷达传感器.红外光温度传感器.地磁磁性物体检测传感器.特殊光源传感器:专用于测 ...

  6. java 加载dll后打包_让Jacob从当前路径读取dll文件及相关打包方法

    让Jacob从当前路径读取dll文件及相关打包方法 独立观察员2013.08.12 Jacob  LibraryLoader.class修改版代码 功能:让jacob可在当前路径下的dll文件夹内读取 ...

  7. 初步解读Golang中的接口相关编写方法

    初步解读Golang中的接口相关编写方法 概述如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键.在Go语言的实际编程中,几乎所有的数据结构都围绕接口 ...

  8. 22 Python IO、打印到屏幕、读取键盘输入、打开和关闭文件、文件定位、重命名和删除文件、Python里的目录、文件,目录相关的方法

    22Python文件I/O 22.1打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: ...

  9. 我的Android进阶之旅------Android利用Sensor(传感器)实现水平仪功能的小例

    这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端.    利用方向传感器返回的第一个参数,实现了一个指南针小应用.   ...

最新文章

  1. 第1关:8位可控加减法电路设计
  2. mysql存储过程执行两边_麻烦问下,为什么我的mysql存储过程一次调用,会被执行了两次?...
  3. OS_CORE.C(10)
  4. Array.from()
  5. java弱引用(WeakReference)和SoftReference的区别以及在android内存处理的作用
  6. ftp模式 503、227错误
  7. CMake编译opencv
  8. JavaFX官方教程(十五)之A Xylophone.java
  9. 如何在ASP.NET Core中编写自定义日志记录提供程序
  10. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
  11. JSK-T1011 反向输出一个三位数【入门】
  12. Linux下Qt的QPixmap加载图片无法显示的问题
  13. Linux nohup 关闭终端的时候,程序依然能在后台运行( linux重定向及nohup不输出的方法)...
  14. 从T7模型中取训练参数
  15. Java版本微信授权登录(概览版)
  16. 从小学算术的速算与二进制速算,分析基础与窍门的关系:
  17. 华为OD机试 - 预订酒店(Java JS Python)
  18. 推荐5款让你相见恨晚的神级软件,把把直击心灵
  19. python跑模型是什么意思_django模型是什么意思
  20. c语言1h什么意思,标准现代精确——1C开叫1H应叫及其他应叫

热门文章

  1. tensorflow实现猫狗分类项目
  2. 关于VS2008+RADE CATIA V5R22的配置问题
  3. spring jdk动态代理、Cglib动态代理和LoadTimeWeaver(LTW)的应用选择
  4. 怎样在大学里学好编程。开发
  5. 配置Mingw64和MSYS2编译环境
  6. vue项目打包后放服务器非根目录下图片找不到
  7. 前端轻量级框架amis入门(新手向)
  8. email营销怎么做才有效
  9. 大数据类型主要分为哪几类,大数据挖掘商业价值方法主要分为哪几种?
  10. cmd之拷贝、删除文件夹