900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Android 通过监听重力传感器来获取当前设备的横竖屏状态(备用选择:加速度传感器)

Android 通过监听重力传感器来获取当前设备的横竖屏状态(备用选择:加速度传感器)

时间:2020-10-05 23:23:07

相关推荐

Android 通过监听重力传感器来获取当前设备的横竖屏状态(备用选择:加速度传感器)

获取重力传感器监听回调步骤

一、获取传感器管理类

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)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。