当前位置: 首页 > news >正文

【Sensors】环境传感器(5)

Android平台提供了四种传感器,可让您监控各种环境属性。您可以使用这些传感器来监控Android设备附近的相对环境湿度,照度,环境压力和环境温度。所有四种环境传感器都是基于硬件的,并且只有在设备制造商将其构建到设备中时才可用。除了大多数设备制造商用来控制屏幕亮度的光传感器之外,环境传感器并不总是可用于设备。因此,在您尝试从中获取数据之前,您在运行时验证是否存在环境传感器,这一点尤其重要。

与大多数运动传感器和位置传感器不同,该传感器为每个SensorEvent传感器返回多维传感器值阵列,而环境传感器为每个数据事件返回一个传感器值。例如,以℃为单位的温度或以hPa为单位的压力。另外,与运动传感器和位置传感器(通常需要高通或低通滤波)不同,环境传感器通常不需要任何数据过滤或数据处理。表1提供了Android平台支持的环境传感器的摘要。

表1. Android平台支持的环境传感器。
【Sensors】环境传感器(5)

1 实现因设备而异。此传感器在Android 4.0(API Level 14)中已弃用。

使用光线,压力和温度传感器


您从光线,压力和温度传感器获取的原始数据通常不需要校准,过滤或修改,这使得它们成为最容易使用的传感器。要从这些传感器获取数据,首先要创建一个SensorManager类的实例,您可以使用该实例来获取物理传感器的实例。然后在onResume()方法中注册一个传感器监听器,并开始处理onSensorChanged()回调方法中的传入传感器数据。以下代码显示如何执行此操作:

public class SensorActivity extends Activity implements SensorEventListener {
  private SensorManager mSensorManager;
  private Sensor mPressure;

  @Override
  public final void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Get an instance of the sensor service, and use that to get an instance of
    // a particular sensor.
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mPressure = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
  }

  @Override
  public final void onAccuracyChanged(Sensor sensor, int accuracy) {
    // Do something here if sensor accuracy changes.
  }

  @Override
  public final void onSensorChanged(SensorEvent event) {
    float millibars_of_pressure = event.values[0];
    // Do something with this sensor data.
  }

  @Override
  protected void onResume() {
    // Register a listener for the sensor.
    super.onResume();
    mSensorManager.registerListener(this, mPressure, SensorManager.SENSOR_DELAY_NORMAL);
  }

  @Override
  protected void onPause() {
    // Be sure to unregister the sensor when the activity pauses.
    super.onPause();
    mSensorManager.unregisterListener(this);
  }
}

您必须始终包含onAccuracyChanged()和onSensorChanged()回调方法的实现。此外,请确保您在活动暂停时始终取消注册传感器。这样可以防止传感器持续感测数据并排空电池。

使用湿度传感器


您可以使用湿度传感器获取原始相对湿度数据,这与使用光照,压力和温度传感器的方式相同。但是,如果设备同时具有湿度传感器(TYPE_RELATIVE_HUMIDITY)和温度传感器(TYPE_AMBIENT_TEMPERATURE),则可以使用这两个数据流来计算露点和绝对湿度。

露点
露点是在恒定的气压下,给定体积的空气必须冷却以使水蒸气冷凝成水的温度。以下公式显示了如何计算露点:
【Sensors】环境传感器(5)

哪里,

t d =以℃为单位的露点温度
t =以摄氏度为单位的实际温度
RH =实际相对湿度百分比(%)
m = 17.62
T n = 243.12
绝对湿度
绝对湿度是给定体积的干燥空气中水蒸气的质量。绝对湿度以克/米3度量。以下公式显示了如何计算绝对湿度:

【Sensors】环境传感器(5)

哪里,

d v =以克/米3为单位的绝对湿度
t =以摄氏度为单位的实际温度
RH =实际相对湿度百分比(%)
m = 17.62
T n = 243.12摄氏度
A = 6.112 hPa

你也应该阅读

  • 传感器
  • 传感器概述
  • 位置传感器
  • 运动传感器
  • AccelerometerPlay示例

    Lastest Update:2018.04.24

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Sensors】环境传感器(5)

转载于:https://blog.51cto.com/4789781/2126354

相关文章:

  • Spring Data 之 Repository 接口
  • 完整性的约束
  • 前端小白入门区块链系列01
  • 关于Visual Studio 2019的前期详情
  • 【AudioVideo】音频应用概述(5)
  • JSON方式封装通信接口
  • 组托管服务帐户(Group Managed Service Accounts,即gMSAs)
  • webpack配置(第四步:html篇(进阶篇))
  • 关于音频文件的上传
  • 技术工坊|解密区块链DApp的代码逻辑,从请求到数据存储都要经历什么?(上海)...
  • bzoj 3670 [Noi2014]动物园
  • 开源PaaS Rainbond v3.6.0正式发布,Service Mesh开箱即用
  • caffe源码学习
  • 切图常用的布局和效果
  • signalr使用websocket报500错误
  • 分享的文章《人生如棋》
  • Akka系列(七):Actor持久化之Akka persistence
  • eclipse(luna)创建web工程
  • HTTP那些事
  • JavaScript对象详解
  • Next.js之基础概念(二)
  • php中curl和soap方式请求服务超时问题
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Vue2.0 实现互斥
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 记录:CentOS7.2配置LNMP环境记录
  • 讲清楚之javascript作用域
  • 深入 Nginx 之配置篇
  • 使用parted解决大于2T的磁盘分区
  • 以太坊客户端Geth命令参数详解
  • 积累各种好的链接
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #git 撤消对文件的更改
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (BFS)hdoj2377-Bus Pass
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LeetCode) T14. Longest Common Prefix
  • (libusb) usb口自动刷新
  • (NSDate) 时间 (time )比较
  • (Python) SOAP Web Service (HTTP POST)
  • (zhuan) 一些RL的文献(及笔记)
  • (多级缓存)缓存同步
  • (二)c52学习之旅-简单了解单片机
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (七)Java对象在Hibernate持久化层的状态
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • **PHP二维数组遍历时同时赋值
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net IE10 _doPostBack 未定义
  • .NET Micro Framework初体验(二)