即使是2024年的今天,安卓平板的软件生态仍然强依赖”信箱模式”和”平行视界”这两根救命稻草,后者@御坂初琴小号 大佬的科普文已经做了足够详细的解释,这里就不过多缀述了。
对平行视界感兴趣的可以点击下放链接阅读@御坂初琴小号 的科普文:
【原创教程】MIUI平行视界全探索
https://ybcq.github.io/2023/02/12/%E3%80%90%E5%8E%9F%E5%88%9B%E6%95%99%E7%A8%8B%E3%80%91MIUI%E5%B9%B3%E8%A1%8C%E8%A7%86%E7%95%8C%E5%85%A8%E6%8E%A2%E7%B4%A2/
那么,接下来直接进入正题。
信箱模式,简而言之就是让所有未适配平板的应用,让他强制用横屏的方式来展示,中间一竖条的形式,不至于打开未适配平板的应用需要扭断脖子去看,所以用小米平板打开未适配平板的应用,会发现应用首先是竖着打开,随后被系统强制转为横屏,也是信箱模式最简单的体现。
说说最近很多用小米平板的酷友都遇到过的例子。
可能有很多酷友发现最近酷狗音乐开始主动适配平板了,于是兴高采烈地把酷狗音乐下载下来,发现在小米平板上竟然还是竖直在中间的信箱模式形态。
显然这个问题在于酷狗音乐并没有真正做好平板的适配,不过有些细心的酷友应该能够发现”设置-平板专区-平行窗口”里面再也找不到酷狗音乐的身影,因为当该应用已经主动适配平板后,小米不再为该应用提供平行视界的开关功能,实际上,这个应用有关平行视界的规则已经失效了。
所以酷狗音乐的问题,本质上已经跟平行视界没有关系了,酷狗触发的实际上是小米内置的信箱模式,这个功能对所有APP都是默认强制启用的。
在OPPO Pad / OPPO Pad 2上也有同样的功能设计,如果有OPPO Pad / OPPO Pad 2的机主可以看看设置里面是不是有个叫“兼容模式”的功能,就是OPPO为自家平板的信箱模式提供的内置开关。
理所当然的,小米当然也有同样的功能,不过小米并没有为信箱模式这个功能提供任何UI方面的开关选项,与平行视界一样,通过内置的配置文件随着ROM更新和不定时下发的云控维护这一套信箱模式的规则。
具体路径分别是:
1 2 3 4
| /product/etc/fixed_orientation_list.xml
/data/system/cloudFeature_fixed_orientation_list.xml
|
这种不受用户控制的配置,加上许多软件开发者都没有大屏适配的经验,在适配平板的时候不一定有按小米提供的平板适配规范去适配,就导致了酷狗音乐这种适配了却又感觉没有适配的问题。
这个问题从小米平板5系列开始就一直存在,直到至今,加上小米对平行视界和信箱模式的云控可能分机型下放的,每个机型的配置甚至不统一(比如米板5的澎湃还没米板6之前MIUI 14的规则新,米板6S Pro的内置规则比其他米板6系列新),老机型的米板会出现墨墨记单词、网易云音乐之类还卡在信箱模式的问题……
虽然小米不提供UI给用户自行配置,不过好在小米特有的对ROOT的包容性(现在小米对BL解锁管得越来越严,可能以后就不再有了),也给爱搞机的酷友提供了一定的折腾空间。
比如LSPosed模块 MaxMiPad 的作者@YifePlayte ,模块内置的”禁用固定屏幕方向作用域”,本质也是通过控制上述提到的fixed_orientation_list.xml,替小米的工程师们为小米平板补齐了一个自由开关某个应用”信箱模式”的UI。(雷军,金凡!!!)
不过实际上,小米内置的信箱模式,其实还能玩出更多的花样,通过解包分析米板内置的 miui-embedding-window.jar,我拿到了有关小米内置信箱模式的所有配置参数。
1 2 3 4 5 6 7 8 9 10 11 12 13
| name="" // 应用包名 disable="false" // 默认为false,是否对该应用禁用内置的信箱模式 isScale="false" // 默认为false,仅适配竖屏的游戏推荐配置为true,是否对该应用的信箱模式根据16:9(类似手机屏幕)的比例进行缩放,同时还会强制缩放页面的内容 relaunch="false" // 默认为false,该应用调用信箱模式后是否需要重载应用,避免应用界面变形 autoUI="" // 默认为空值,没试出这个属性有什么用,可能给自适应布局用的?暂时没试出这个属性的用途 allPortrait="false" // 默认为false,是否让应用所有页面强制以竖屏进行显示,而不是由应用根据Activity的不同情况切换横竖屏 ratio="0" // 默认为0,设置信箱模式下的展示比例,比如16:10,可以写成1.6 skipCompatMode="false" // 默认为false,跳过兼容模式 allowEmbInPortrait="true" // 默认为true,允许信箱模式竖屏时两边区域空白 transparentBar="true" // 默认为true,沉浸式小白条? adaptCutout="-1" // 默认为-1,自适应摄像头挖孔区域,该配置主要用在Mix Fold系列折叠屏机型(平板没挖孔屏),如果某个应用被前摄挖孔区域挡住了可以配置 isShowDivider="false" // 默认为false,推荐为true,是否支持左右滑动调节,如果应用自适配了平行视界,为它补齐小米的左右滑动调节 supportFullSize=“false” // 默认为"false",推荐配置为"true",是否支持视频全屏
|
如果需要禁用一个应用的信箱模式,只需要这样配置:
1 2 3
| // fixed_orientation_list.xml
<package name="com.kugou.android" disable="true" />
|
如果需要禁用一个应用的信箱模式的同时,还需要让它强制横屏显示,可以这样配置:
1 2 3 4 5 6 7
| // fixed_orientation_list.xml
<package name="com.kugou.android" disable="true" />
// embedded_rules_list.xml
<package name="com.kugou.android" fullRule="*" />
|
如果需要为一个自身已经适配平行视界的应用,提供小米内置的左右滑动调节,可以这样配置:
1 2 3 4 5 6 7
| // fixed_orientation_list.xml
<package name="com.sina.weibo" disable="true" isShowDivider="true" />
// embedded_rules_list.xml
<package name="com.kugou.android" fullRule="*" isShowDivider="true" />
|
如果需要给一个仅适配竖屏的游戏/应用,以类似手机16:9的分辨率,通过信箱模式进行显示,可以这样配置:
1 2 3
| // fixed_orientation_list.xml
<package name="com.facebook.katana" relaunch="false" isScale="true" supportFullSize="true" />
|
如果为一个没适配前摄挖孔的应用,在Mix Fold 折叠屏上适配,可以这样配置:
1 2 3
| // fixed_orientation_list.xml
<package name="com.heytap.health" adaptCutout="1" />
|
以上就是小米内置信箱模式常用到的适配方式了。