扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
安卓屏幕自动旋转失灵的原因是:
创新互联建站是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:自适应网站建设、品牌网站制作、成都全网营销。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。网站设计、网站建设、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。
(1)硬件问题,也就是Android手机的重力感应器出了问题。
(2)软件问题,基本是刷机过于频繁造成的。
解决办法:
1、检查手机通知面板中屏幕旋转功能是否开启。
2、打开照相机,在取景状态下检查功能图标能否随手机旋转。
3、检查手机是否有新版本推送,升级至最新版本尝试。
4、备份手机数据(电话簿、短信息、多媒体文件等)将手机恢复到出厂设置。
重力感应装置包括感应器、处理器和控制器三个部分。感应器负责侦测存储器的状态,计算存储器的重力加速度值;处理器则对加速度值是否超出安全范围进行判断;而控制器则负责控制将磁头锁定或者释放出安全停泊区。
一旦感应器侦测并经处理器判断当前的重力加速度超过安全值之后,控制器就会通过硬件控制磁头停止读写工作,并快速归位,锁定在专有的磁头停泊区。这一系列动作会在200毫秒内完成。当感应装置探测到加速度值恢复到正常值范围之后,产品才会恢复工作。
在手机桌面上点击设置这个选项,进入设置页面。向下拉,可以看到显示这个选项点击进入。
在在显示选项中可以看到自动旋转屏幕,点击自动旋转屏幕后的按钮关闭即可。
如果想要快速设置旋转屏幕,我们可以在手机桌面向下拉,看到功能排序。
在此页面将我们想要使用的功能即方向锁定向上移动,则可以将该功能放置在下拉界面的第一位,这样就方便了我们进行设置。
打开手机,找到“设置”并打开;
在“设置”面板,“设备”一栏找到“显示”,点击打开;
在“显示”界面勾选“自动旋转屏幕”即可。
完成设置后,安卓手机就能够根据重力感应旋转屏幕。
屏幕会根据当前传感器进行自动旋转,旋转之后,activity屏幕的 生命周期不会发生变化 ,在activity中只会回调onConfigurationChanged方法
可见每次旋转onDestory()方法都会被调用,如果要保存一些activity被销毁前的数据的可以在onSaveInstanceState()方法中通过Bundle去保存
当我们调用了:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
或者
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
之后屏幕不会再自动旋转回来的情况
关于这点:我在b站App端也发现相关问题,点进b站的播放视频界面,我们手机开启屏幕自动旋转,当我们横竖屏旋转的时候是可以正常横竖屏切换的,但是我们点击视频右下角的放大(就是横屏)之后,自动旋转就失效了,要竖屏的话需要再点击一次
关于这个问题,就是我们说的setRequestedOrientation之后重力传感失效的问题,处理的方法也很简单
在AndroidManifest.xml中设置了android:configChanges="orientation|keyboardHidden|screenSize的基础上,在onConfigurationChanged中调用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR) 方法,使其恢复重力传感即可
以华为Mate40手机为例:
升级HarmonyOS系统后,从屏幕右侧顶部下滑出控制中心界面,点击自动旋转开启屏幕自动旋转功能。
客制需求:Android 10 设备添加一个旋转屏幕开关,设备没有装重力感应,所以不能自动旋转屏幕;
1.参考系统自动旋转屏幕:添加一个SwitchPreference ,和对应的控制器RotateScreenPreferenceController
2.声明:persist.sys.user_rotation 属性来记录旋转状态;
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流