业界动态
自动切换横竖屏幕——手机加速度传感器在Android横竖屏切换中的应用旋转手机「自动切换横竖屏幕——手机加速度传感器在Android横竖屏切换中的应用」
2025-01-13 16:51

作者:声网Agora 工程师 黄龙飞

在日常生活中使用手机,通常都会遇到下面这两种场景。
场景一:
在使用手机看视频且设备开启屏幕自动旋转时,手机横着拿和竖着拿,所看到的效果会不一样。竖屏状态下的展示如下图(图1)所示,横屏状态下的展示如图2所示。

上述中的两种场景,都是根据用户手持手机的方式及旋转动作自动识别出用户是想要横屏展示还是竖屏展示的。关于“手机如何根据用户的旋转动作而识别出用户意图"这个问题将会在下文中具体阐述。

手机实现这一功能的核心部件是加速度传感器,在介绍加速度传感器之前,先了解一下传感器坐标系。

  • 传感器坐标系

通常,传感器框架使用标准的 3 轴坐标系来表示数据值。对于大多数传感器,当设备处于默认屏幕方向时,会相对于设备屏幕来定义坐标系(参见图 5)。当设备处于默认屏幕方向时,X 轴为水平向右延伸,Y 轴为垂直向上延伸,Z 轴为垂直于屏幕向外延伸。在此坐标系中,屏幕后面的坐标将具有负 Z 值。关于此坐标系,特别需要注意的一点就是传感器的坐标系不会随着设备的移动而改变。

[图片上传失败...(image-4c19c9-1610448627906)]

图5.传感器坐标系(相对于设备)

加速度传感器,它采用弹性敏感元件制成悬臂式位移器,与采用弹性敏感元件制成的储能弹簧来驱动电触点,完成从重力变化到电信号的转换。例如:一个壳体与要测量加速度的物体,通过弹簧连接在一起,组成的一个重力感应器,当我们把壳体向上移动时,金属球会因为惯性向下拉伸弹簧,这时我们只需要测量出弹簧的拉伸量,我们就可以由此计算出重力。由此易得,X,Y,Z加速度计,就能测量一个物体在三维空间中的运动方向。详细说明请参阅[重力感应原理]

加速度传感器在Android横竖屏切换中的应用
加速度传感器在移动设备中的应用众多,本文主要介绍加速度传感器在Android系统中横竖屏切换的应用,其原理主要为:通过监听加速度传感器,实时获得X、Y、Z三个方向的加速度值;当4(XX + YY)>=Z*Z时,开始计算设备在X与Y平面上的旋转角度;最后根据旋转角度计算出设备的横竖屏状态。下面贴出主要代码。




Math.atan2(-Y, X) 是计算从原点(0,0)到(x,y)点的线段与x轴正方向之间的平面角度(弧度值),
float angle = (float)Math.atan2(-Y, X) * OneEightyOverPi得到的是原点(0,0)到(x,y)点的线段与x轴正方向之间的角度,90 - (int)Math.round(angle)为设备旋转的角度。

本节实现一个简易的打高尔夫球游戏,练习一下加速度传感器的运用。该游戏为多人游戏,游戏规则为:参与者通过摇晃手机控制高尔夫球的移动,当高尔夫球落到洞中则计1分,否则不计分,每人操作3次,得分最高者获胜。游戏实现原理是根据加速度传感器获得设备旋转角度,实时计算并更新高尔夫球的位置,根据高尔夫球的位置与洞的重合度,判断高尔夫球是否落入洞中。落入洞中则得分,否则,不计分。游戏具体实现见附件,演示如下。

链接: https://pan.baidu.com/s/1Kas3kL0fdaXbygGA--l7JQ 2 提取码: 87nh
链接: https://pan.baidu.com/s/1yXNbbI3QhYG3BMZsyG2PSw 1 提取码: 8uaz

大多数移动设备,除了上面介绍的加速度传感器外,还有很多内置传感器,比如:重力传感器、旋转矢量传感器、屏幕方向传感器、温度传感器、光传感器、压力传感器等(如需了解详细信息,请参阅传感器)。开发者可以根据这些传感器,实现许多非常智能的功能。比如:

通过光线传感器,自动调节屏幕的亮度,保护用户的眼睛
通过加速度传感器,实现计步器和运动检测功能
通过湿度传感器和温度传感器,计算露点和绝对湿度
通过GPS,实现导航功能
参考文献:

https://developer.android.com/guide/topics/sensors/sensors_motion?hl=zh-cn 1
https://developer.android.com/guide/topics/sensors/sensors_overview?hl=zh-cn
https://github.com/googlearchive/android-AccelerometerPlay
https://v.qq.com/x/page/t050708r6ea.html
https://baike.baidu.com/item/重力感应器?fromtitle=重力传感器&fromid=3623984

    以上就是本篇文章【自动切换横竖屏幕——手机加速度传感器在Android横竖屏切换中的应用旋转手机「自动切换横竖屏幕——手机加速度传感器在Android横竖屏切换中的应用」】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/7024.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
九项世界第一!外媒盛赞华为P40系列:2020最好的拍照旗舰dxomark手机拍照排名「九项世界第一!外媒盛赞华为P40系列:2020最好的拍照旗舰」
3月26日晚,华为P40系列全球首发,华为P40、P40 Pro、P40 Pro+三款全新机型同台登场,外观设计、性能、系统全面升级,并以九项世
我的世界朱紫宝可梦我的世界神奇宝贝手机版下载「我的世界朱紫宝可梦」
我的世界朱紫宝可梦是一款融合了宝可梦朱紫元素的“我的世界”mod新模组,用沙盒方块把一只只宝可梦活灵活现的表现出来,同时也
2023游戏盒子排行榜前十名推荐手机游戏盒子「2023游戏盒子排行榜前十名推荐」
2023游戏盒子排行榜前十名是哪前十名呢,这前十名有这么好用吗,很多小伙伴想知道,这样选择的时候就会不太困难,下面就跟着小编
小米手机开机键失灵,恢复唤醒方式小米手机开机键坏了怎么开机「小米手机开机键失灵,恢复唤醒方式」
小米手机作为一款性价比极高的智能手机,受到了广大用户的青睐。在使用过程中,也可能会遇到一些问题,比如开机键失灵。开机键失
旧手机上的数据导入到新手机教程旧手机数据导入新手机「旧手机上的数据导入到新手机教程」
由于现在手机更新换代非常快,因此很多人每过个2-3年的时间就会给自己换一部新手机。而换手机之后最大的麻烦就是怎么把旧手机上
vivo主题商店最新版(i主题)安卓手机主题「vivo主题商店最新版(i主题)」
vivo主题商店免费版,即i主题,这是很多vivo手机自带的主题壁纸软件,用户可以在app上自由挑选自己喜爱的静态、动态壁纸,超多主
华为授权体验店(南水街店)珠海手机「华为授权体验店(南水街店)」
华为授权体验店(南水街店),联系电话:0756-7711179,地址位于南水镇南水街9-10号铺,靠近南桥路、浪白路、南港二街和浪白西路。
21:9屏幕:智能手机的新“健身成果”手机屏幕比例「21:9屏幕:智能手机的新“健身成果”」
“你最喜欢什么尺寸、比例的手机屏幕?” 这个问题如同评价耳机音质一般充满了玄学,一句“合适就好”的背后充满了不确定性。从
小米新旗舰Mi6开箱+大型玩机攻略小米手机保护套「小米新旗舰Mi6开箱+大型玩机攻略」
追加修改(2017-07-06 21:27:30):7月3日我编辑完文档之后就提交了,提交后再次阅读的时候发现文中一个错误,但是此时已经不能修改
GTS神奇手机神奇手机「GTS神奇手机」
本文才用第一人称视角来写,第一次写,不喜勿喷。如有相似的文章,纯属巧合。我叫林雪 身高:130cm体重:50斤 胸围:A--(可以看成是
相关文章