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?
source to share
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;
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.
source to share