内容简介:近期遇到一个需要使用到传感器的项目,对传感器做了部分调研,这里把 Android 中的传感器使用总结一下。
基础知识
关于传感器,可能会用到关于设备的三个物理轴,这里解释一下:
传感器分类
传感器分为三种,但某些传感器方法取回的值可能是根据多个基础传感器计算而得,这里只做表象的区分:
Motion sensors
运动传感器:沿三个轴测量加速力和旋转力。此类别包括加速度计,重力传感器,陀螺仪和旋转矢量传感器。
-
TYPE_ACCELEROMETER:测量在所有三个物理轴(x,y和z)上应用于设备的加速力m / s2,包括重力。
-
TYPE_GRAVITY:测量在所有三个物理轴(x,y,z)上应用于设备的重力m / s2。
-
TYPELINEARACCELERATION:测量在所有三个物理轴(x,y和z)上应用于设备的加速力m / s2,不包括重力。
Environmental sensors
环境传感器:测量各种环境参数,例如环境空气温度和压力,照明和湿度。 此类别包括气压计,光度计和温度计。
-
TYPE_LIGHT:以lx为单位测量环境光水平(照度)。
-
TYPE_PRESSURE:以hPa或mbar测量环境空气压力。
-
TYPE_PROXIMITY:测量相对于设备视图屏幕的对象的接近度(cm)。该传感器通常用于确定手机是否被握在人的耳朵上。
-
TYPERELATIVEHUMIDITY:以百分比(%)测量相对环境湿度。
-
TYPEAMBIENTTEMPERATURE:以摄氏度(°C)为单位测量环境室温。
-
TYPETEMPERATURE:以摄氏度(°C)为单位测量设备的温度。此传感器实现因设备而异,并且此传感器已替换为API级别14中的TYPEAMBIENT_TEMPERATURE传感器
Position sensors
位置传感器:这些传感器测量设备的物理位置。 此类别包括方向传感器和磁力计。
-
TYPE_GYROSCOPE:测量设备在三个物理轴(x,y和z)中的每一个周围以rad / s为单位的旋转速率。
-
TYPEMAGNETICFIELD:以μT为单位测量所有三个物理轴(x,y,z)的环境地磁场。
-
TYPEROTATIONVECTOR:通过提供设备旋转矢量的三个元素来测量设备的方向。
-
TYPE_ORIENTATION:测量设备围绕所有三个物理轴(x,y,z)旋转的度数。 从API级别3开始,您可以通过使用重力传感器和地磁场传感器以及getRotationMatrix()方法获得设备的倾斜矩阵和旋转矩阵。(同时使用位置传感器)
实现监听
对于传感器的监听,系统 API 封装的非常方便,只需要实现接口并重写方法即可,这里以监听加速度为例,其余都很相似:
Sensor.TYPE_ACCELEROMETER
1.获取 SensorManager 并注册监听
private lateinit var sensorManager: SensorManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
sensorManager.registerListener(
this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL
)
}
2、实现 SensorEventListener 并重写方法
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
Log.e("xx", "onAccuracyChanged")
}
override fun onSensorChanged(event: SensorEvent?) {
if (event?.sensor?.type == Sensor.TYPE_ACCELEROMETER) {
val xAccelerate = event.values?.get(0)
val yAccelerate = event.values?.get(1)
val zAccelerate = event.values?.get(2)
Log.e("xx", "xAccelerate:$xAccelerate\nyAccelerate:$yAccelerate\nzAccelerate:$zAccelerate")
}
}
就这么简单,但是要记得在对应的生命周期停止对传感器的监听!!!
参考资料
Android guide:
https://developer.android.com/guide/topics/sensors/sensorsenvironment
安卓各种传感器的使用:
https://blog.csdn.net/weixin38379772/article/details/79069494
完整代码地址:https://github.com/loosaSH/android-sensors
–END–
识别二维码,关注我们
今天的文章Android 传感器使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15099.html