/Android 11s power menu may turn into control center for home automation – XDA Developers

Android 11s power menu may turn into control center for home automation – XDA Developers

Share and Alert them all
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Update 2 (2/20/2020 @ 7:00 PM EST): Kieron Quinn sent us a screenshot showing more definitive evidence that this Controls API is intended to surface home automation controls in the Android 11 power menu.

Update 1 (2/20/2020 @ 5:30 PM EST): We discovered evidence that may explain why Google is working on this feature: providing quick access to home automation controls! More information below. The original article follows.

When Google released Android 11 Developer Preview 1 yesterday, we found mostly surface-level changes in our initial hands-on. It seems that Google will once again leave the bulk of the user interface changes and new features for a public beta after an announcement at Google I/O 2020. However, we discovered several in-development user interface tweaks that suggest big changes are coming for the Android OS in 2020. We discovered that Google may put a media player in the Quick Settings panel, separate the notification shade from the Quick Settings panel, and now, we’ve found that Google may be tweaking the power menu to accommodate user-selected home automation shortcuts.

On my Pixel 2 XL running Android 11 DP1, I managed to activate a new UI for the long-press power menu, as shown below. The existing power menu icons, including Emergency, Screenshot, Restart, and Power off, shift to the top of the screen, leaving a lot of empty space underneath. In addition, a new “Home” text appears above the icons. The icons shifting upward suggests that Google plans on adding something to fill up the empty space, which we initially assumed was in preparation for the new Quick Access Wallet feature that’s now in Android 11. However, the presence of the “Home” text raises the question of why it’s there—could Google be in the process of creating categories in the power menu for different kinds of actions?


Digging into the code, we discovered multiple classes in SystemUIGoogle related to a feature called “Controls.” The code suggests that the user can set shortcuts as “favorites” to show up in this menu, which are stored by the system in an XML file with the shortcuts’ IDs, titles, types, and components. There are new activities in SystemUIGoogle related to Controls: ControlsFavoritingActivity and ControlsProviderSelectorActivity. Launching the former raises a permission denial as it’s an unexported activity and we don’t have root access while launching the latter brings up the following UI:

Android 11 Controls Providers
Android 11 Controls Providers
Unfortunately, this UI is empty at the moment, so we aren’t able to add our own favorite shortcuts to the power menu. We found references to a new permission called “android.permission.BIND_CONTROLS” and a new service called “android.service.controls.ControlsProviderService” that suggest that third-party applications will be able to create a “Controls” service that the Android System can bind to and show in this list, much like with Quick Settings tiles. That there are no third-party applications that support the “Controls” API would explain why the activity shown above is empty at the moment.

It looks like Google is taking cues from the iOS Control Center here, though we aren’t entirely sure why Google is working on this feature in the first place given that the Quick Settings panel already exists, and it can be filled with custom shortcuts. We’ll keep track of the development of this feature in case anything changes in future Android 11 Developer Previews.

Android 11 News on XDA

Update 1: Possibly for Home Automation Controls

After publishing this article, XDA Recognized Developer Quinny899 reached out to inform us of his own finding. The updated framework.jar in Android 11 reveals what kinds of shortcuts may appear in the “Controls” menu in the power menu. He discovered a list of appliance types that are accepted as “valid device types” in the Controls service. Here is the full list:

Supported Home Automation Device Types for Android 11 Controls API

private static final int NUM_CONCRETE_TYPES = 51;
private static final int NUM_GENERIC_TYPES = 7;
public static final int TYPE_AC_HEATER = 1;
public static final int TYPE_AC_UNIT = 2;
public static final int TYPE_AIR_FRESHENER = 3;
public static final int TYPE_AIR_PURIFIER = 4;
public static final int TYPE_AWNING = 33;
public static final int TYPE_BLINDS = 34;
public static final int TYPE_CAMERA = 50;
public static final int TYPE_CLOSET = 35;
public static final int TYPE_COFFEE_MAKER = 5;
public static final int TYPE_CURTAIN = 36;
public static final int TYPE_DEHUMIDIFIER = 6;
public static final int TYPE_DISHWASHER = 24;
public static final int TYPE_DISPLAY = 7;
public static final int TYPE_DOOR = 37;
public static final int TYPE_DOORBELL = 51;
public static final int TYPE_DRAWER = 38;
public static final int TYPE_DRYER = 25;
public static final int TYPE_FAN = 8;
public static final int TYPE_GARAGE = 39;
public static final int TYPE_GATE = 40;
public static final int TYPE_GENERIC_ARM_DISARM = -5;
public static final int TYPE_GENERIC_LOCK_UNLOCK = -4;
public static final int TYPE_GENERIC_ON_OFF = -1;
public static final int TYPE_GENERIC_OPEN_CLOSE = -3;
public static final int TYPE_GENERIC_START_STOP = -2;
public static final int TYPE_GENERIC_TEMP_SETTING = -6;
public static final int TYPE_GENERIC_VIEWSTREAM = -7;
public static final int TYPE_HEATER = 0x2F;
public static final int TYPE_HOOD = 10;
public static final int TYPE_HUMIDIFIER = 11;
public static final int TYPE_KETTLE = 12;
public static final int TYPE_LIGHT = 13;
public static final int TYPE_LOCK = 45;
public static final int TYPE_MICROWAVE = 14;
public static final int TYPE_MOP = 26;
public static final int TYPE_MOWER = 27;
public static final int TYPE_MULTICOOKER = 28;
public static final int TYPE_OUTLET = 15;
public static final int TYPE_PERGOLA = 41;
public static final int TYPE_RADIATOR = 16;
public static final int TYPE_REFRIGERATOR = 0x30;
public static final int TYPE_REMOTE_CONTROL = 17;
public static final int TYPE_SECURITY_SYSTEM = 46;
public static final int TYPE_SET_TOP = 18;
public static final int TYPE_SHOWER = 29;
public static final int TYPE_SHUTTER = 42;
public static final int TYPE_SPRINKLER = 30;
public static final int TYPE_STANDMIXER = 19;
public static final int TYPE_STYLER = 20;
public static final int TYPE_SWITCH = 21;
public static final int TYPE_THERMOSTAT = 49;
public static final int TYPE_TV = 22;
public static final int TYPE_UNKNOWN = 0;
public static final int TYPE_VACUUM = 0x20;
public static final int TYPE_VALVE = 44;
public static final int TYPE_WASHER = 0x1F;
public static final int TYPE_WATER_HEATER = 23;
public static final int TYPE_WINDOW = 43;

It’s possible that Google will allow you to control your smart home appliances through the power menu in Android 11. This explanation makes sense in context of the “home” text appearing up top. We’ll update you if we learn more about this feature or if we manage to get our own shortcut to appear in the menu.

Update 2: Controls Provider Hacked to show a custom “Lightbulb” app

Here’s a screenshot provided by developer Kieron Quinn showing a quick “Lightbulb” app he put together and managed to surface in the “Controls Providers” activity in Android 11. Tapping on the icon currently makes the system crash. We’ll update this post if we manage to get it working beyond this.


Want more posts like this delivered to your inbox? Enter your email to be subscribed to our newsletter.