获取重力传感器监听回调步骤
一、获取传感器管理类
private val mSensorManager by lazy { getSystemService(Context.SENSOR_SERVICE) as SensorManager }
二、获取需要的传感器类型
private val mSenSor by lazy { mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY) }//mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)//第一个是重力传感器,注释里面的是加速度传感器
三、实现传感器监听类
private val mSensorEventListener = object : SensorEventListener {override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {//传感器变化时会调用这里}override fun onSensorChanged(event: SensorEvent?) {val x = event.values[0 % event.values.size]//这是x轴的变化val y = event.values[1 % event.values.size]//yval z = event.values[2 % event.values.size]//z//根据这几个值的变化,可以判断手机的横竖屏以下是我自己在应用中使用的数值//在Z大于8.0小于-8.0时,手机基本上是平放,此时直接返回不做UI变化其他数值往下走//x值大于7.0,y值在-4.0到4.0之间时,手机可以看成是头部在左的横屏状态//x值小于-7.0,y值在-4.0到4.0之间时,手机可以看成是头部在右的横屏状态//当y值小于-4.0时,手机是头部在下的倒立状态//剩下的范围就是手机竖拿的状态了//具体数值范围可根据自己项目的需求而跳转,由于这边回调很频繁,需要自己加时间判断去适时更新UI}}
四、注册监听
mSensorManager.registerListener(mSensorEventListener,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL//这个可以根据自己的需要设置不同的值,具体可以Android源码)
五、注销监听
超简单
mSensorManager.unregisterListener(mSensorEventListener)