首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何确定一个安卓设备是否运行着官方的安卓7.0+自由式多窗口模式?

我们如何确定一个安卓设备是否运行着官方的安卓7.0+自由式多窗口模式?
EN

Stack Overflow用户
提问于 2017-06-19 13:26:13
回答 1查看 875关注 0票数 5

当Android7.0发布时,他们说有一个自由格式的多窗口模式选项,大致类似于传统的窗口桌面OSes的工作方式(多个重叠的可调整大小的窗口):

大型设备的制造商可以选择启用自由格式模式,在这种模式中,用户可以自由地调整每个活动的大小。如果制造商启用此功能,则该设备除了提供分屏模式外,还提供自由格式模式。

然而,他们没有为这种模式提供任何官方环境。

我知道至少有两种安卓7.0+环境,它们的形式相当于自由的多窗口模式:

  • 一些Chrome设备(如宏碁Chromebook C738T)
  • 三星DeX,在DeX模式下操作时(而不是屏幕镜像模式)

两者都提供多个重叠的可调整大小的窗口。然而,他们的行为是不一样的。例如,DeX为窗口托管活动提供了一个“旋转”标题栏选项,这些活动不被宣传为可以调整大小,从而将窗口从纵向翻转到横向。Chrome免费的多窗口实现缺乏这一点。

一种在安卓7.0+设备(如Nexus 9)上获得官方自由格式多窗口模式的非官方方法是通过adb shell settings put global enable_freeform_support 1。但是,当我在Chrome或DeX环境上运行DeX时,我会返回null,这意味着没有设置此设置。

问题在于,Chrome和DeX本身都非常“怪异”,很可能在Android7.0之上实现了它们自己的半私有自由格式多窗口模式。毕竟,Chrome上的有其原有的基于Android6.0的发行版,而三星在Android7.0之前的一些设备上提供了两屏多窗口模式。

那么,是否有明确的方法来判断一个特定的Android环境--一个自由的多窗口用户界面--是否使用的是官方的Android 7.0+免费多窗口实现,而不是其他什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 16:08:56

SystemUI使用以下方法来确定是否可用自由格式多窗口模式:

代码语言:javascript
复制
mHasFreeformWorkspaceSupport =
    mPm.hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) ||
            Settings.Global.getInt(context.getContentResolver(),
                    DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0;

请参阅:base/blob/nougat-release/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java#L213-216

DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT是隐藏的,所以您需要用"enable_freeform_support"替换它。

代码语言:javascript
复制
boolean hasFreeFormWorkspaceSupport =
    getPackageManager().hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) ||
        Settings.Global.getInt(getContentResolver(), "enable_freeform_support", 0) != 0;

我没有Android on Chrome或DeX来测试这一点,然而,SystemUI是如何检查是否启用了自由格式的多窗口支持的。也许您可以从DeX或Chrome中解压缩设置或systemui应用程序,并检查它们是否在这里进行了更改。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44631867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档