How to determine if an Android device will run Android 7.0+ Freeform Multi-Window Mode?

At the time the Android 7.0 release was announced, they stated that there was a freeform multi-format mode option, roughly similar to how traditional windowed desktop OSs work (multiple overlapping resizable windows):

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

However, they did not provide any formal environment for this regime.

I know of at least two Android 7.0+ environments that today have what constitutes free-form multi-window mode:

  • Certain Chrome OS devices (such as the Acer Chromebook C738T)
  • Samsung DeX when running in DeX mode (not mirroring)

Both offer multiple overlapping resizable windows. However, their behavior is not the same. For example, DeX offers a "rotate" title bar for Windows hosting operations that are not advertised as resizable, which flips the window from portrait to landscape. Implementing multi-screen without using Chrome OS doesn't have that.

The unofficial way to get the official freeform multi-format mode on an Android 7.0+ device (like the Nexus 9) is via adb shell settings put global enable_freeform_support 1

. However, when I run settings get global enable_freeform_support

on Chrome OS or DeX, I come back null

suggesting that this option should not be set.

The problem is that both Android-on-Chrome-OS and DeX are weird enough in their own right that both could implement their own semi-tasking multi-formatting mode on top of Android 7.0. After all, Android-on-Chrome-OS had this with the original distribution based on Android 6.0, and Samsung offered multi-screen multi-screen modes on some of its devices prior to Android 7.0.

So, is there a definitive way to tell if a given Android environment that has a free-form multi-window interface is using the official multi-format version for Android 7.0+ versus something else?

+3


source to share


1 answer


SystemUI uses the following to determine if free-form multi-screen mode is available:

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

      

See: 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

is hidden, so you need to replace it with "enable_freeform_support"

:

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

      




I don't have Android-on-Chrome-OS or DeX to test this, however, this is how SystemUI checks if free-form multi-window support is enabled. Maybe you can decompile the settings or systemui app from DeX or Chrome and check if you made changes here.

+2


source







All Articles