内容简介:在不久的将来,我遇到了一个需要使用传感器的项目,并对传感器进行了部分研究 Android 总结中传感器的使用情况。
基础知识
关于传感器,可以使用关于设备的三个物理轴,这里有一个解释:
传感器分类
传感器分为三种,但某些传感器方法取回的值可以根据多个基本传感器计算,这里只区分外观:
运动传感器:沿三个轴测量加速力和旋转力。该类别包括加速度计、重力传感器、陀螺仪和旋转矢量传感器。
TYPE_ACCELEROMETER:测量所有三个物理轴(x,y和z)应用于设备的加速力m / s包括重力。
TYPE_GRAVITY:测量所有三个物理轴(x,y,z)上应用于设备的重力m / s2。
TYPELINEARACCELERATION:测量所有三个物理轴(x,y和z)应用于设备的加速力m / s不包括重力。
环境传感器:测量环境空气温度和压力、照明和湿度等各种环境参数。 该类别包括气压计、光度计和温度计。
TYPE_LIGHT:以lx测量单位的环境光水平(照度)。
TYPE_PRESSURE:以hPa或mbar测量环境空气压力。
TYPE_PROXIMITY:测量与设备视图屏幕对象的接近度相比(cm)。传感器通常用于确定手机是否握在人的耳朵上。
TYPERELATIVEHUMIDITY:相对环境湿度用百分比(%)测量。
TYPEAMBIENTTEMPERATURE:以摄氏度(°C)为单位测量环境室温。
TYPETEMPERATURE:以摄氏度(°C)为单位测量设备的温度。该传感器因设备而异,已更换为API级别14中的TYPEAMBIENT_TEMPERATURE传感器
位置传感器:这些传感器测量设备的物理位置。 该类别包括方向传感器和磁力计。
TYPE_GYROSCOPE:三个物理轴测量设备(x,y和z)中间的每一个周围rad / s单位旋转速率。
TYPEMAGNETICFIELD:以μT单位测量三个物理轴(x,y,z)环境磁场。
TYPEROTATIONVECTOR:测量设备的方向是通过提供设备旋转矢量的三个矢量。
TYPE_ORIENTATION:测量设备围绕三个物理轴(x,y,z)旋转度数。 从API从级别3开始,您可以使用重力传感器和地磁场传感器getRotationMatrix()获取设备的倾斜矩阵和旋转矩阵。()
实现监听
系统监控传感器 API 包装非常方便,只需要实现界面并重写方法,以监控加速度为例,其余都非常相似:
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--