android - 我们如何识别 Android 设备是否运行官方 Android 7.0+ 自由格式多窗口模式?

标签 android

当 Android 7.0 宣布时,他们说有一个自由形式的多窗口模式选项,大致类似于传统窗口桌面操作系统的工作方式(多个重叠的可调整大小的窗口):

Manufacturers of larger devices can choose to enable freeform mode, in which the user can freely resize each activity. If the manufacturer enables this feature, the device offers freeform mode in addition to split-screen mode.

但是,他们并没有为这种模式提供任何官方环境。

我知道现在至少有两个 Android 7.0+ 环境具有自由形式的多窗口模式:

  • 某些 Chrome 操作系统设备(例如 Acer Chromebook C738T)
  • Samsung DeX,在 DeX 模式(非屏幕镜像模式)下运行时

两者都提供多个重叠的可调整大小的窗口。然而,他们的行为并不相同。例如,DeX 为托管 Activity 的窗口提供了一个“旋转”标题栏选项,这些 Activity 未被宣传为可调整大小,可将窗口从纵向翻转为横向。 Chrome OS 自由格式多窗口实现缺少这一点。

在 Android 7.0+ 设备(例如 Nexus 9)上获得官方自由格式多窗口模式的非官方方法是通过 adb shell settings put global enable_freeform_support 1。但是,当我在 Chrome 操作系统或 DeX 环境上运行 settings get global enable_freeform_support 时,我返回 null,提示未设置此设置。

问题是 Android-on-Chrome-OS 和 DeX 本身就足够“怪异”,它们很可能在 Android 7.0 之上实现了自己的半专有自由格式多窗口模式。毕竟,Android-on-Chrome-OS 在其原始的基于 Android 6.0 的发行版中具有这种功能,而三星在其部分 Android 7.0 之前的设备上提供了分屏多窗口模式。

那么,是否有明确的方法来判断一个给定的支持自由形式多窗口 UI 的 Android 环境是使用官方的 Android 7.0+ 自由形式多窗口实现还是其他东西?

最佳答案

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

mHasFreeformWorkspaceSupport =
    mPm.hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) ||
            Settings.Global.getInt(context.getContentResolver(),
                    DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0;

参见:https://github.com/android/platform_frameworks_base/blob/nougat-release/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java#L213-216


DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT 已隐藏,因此您需要将其替换为 "enable_freeform_support":

boolean hasFreeFormWorkspaceSupport =
    getPackageManager().hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) ||
        Settings.Global.getInt(getContentResolver(), "enable_freeform_support", 0) != 0;

我没有 Android-on-Chrome-OS 或 DeX 来测试它,但是,这是 SystemUI 检查是否启用了自由格式多窗口支持的方式。也许您可以从 DeX 或 Chrome 中反编译设置或 systemui 应用程序,并检查它们是否在此处进行了更改。

关于android - 我们如何识别 Android 设备是否运行官方 Android 7.0+ 自由格式多窗口模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44631867/

相关文章:

android - 麻省理工学院 AppInventor : How to handle a large list?

android - 如何使图片显示在屏幕上,几秒钟后自行删除?

android - 如何检查 ChromeCast 设备在 wifi 网络中是否可用?

javascript - 如何 Intent 在Webview中打开Whatsapp?

android - 使用 OpenCV 为 APK 复制文件

android - 更改 AlertDialog 的样式

android - 从 timePickerDialog 获取输入

android - 你如何调整 gradle 中 dex 内存的 jvm args?

android - Android Studio 调试器窗口中的数字是什么意思?

java - 获取设备 ID 以显示 Admob 插页式广告