Loading core/res/res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -2872,4 +2872,8 @@ <!-- Additional non-platform defined secure settings exposed to Instant Apps --> <string-array name="config_allowedSecureInstantAppSettings"></string-array> <!-- Handle volume keys directly in Window Manager without passing them to the foreground app --> <bool name="config_handleVolumeKeysInWindowManager">false</bool> </resources> core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -3010,4 +3010,5 @@ <java-symbol type="array" name="config_allowedSystemInstantAppSettings" /> <java-symbol type="array" name="config_allowedSecureInstantAppSettings" /> <java-symbol type="bool" name="config_handleVolumeKeysInWindowManager" /> </resources> services/core/java/com/android/server/policy/PhoneWindowManager.java +16 −4 Original line number Diff line number Diff line Loading @@ -584,6 +584,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean mTranslucentDecorEnabled = true; boolean mUseTvRouting; private boolean mHandleVolumeKeysInWM; int mPointerLocationMode = 0; // guarded by mLock // The last window we were told about in focusChanged. Loading Loading @@ -1938,6 +1940,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { mUseTvRouting = AudioSystem.getPlatformType(mContext) == AudioSystem.PLATFORM_TELEVISION; mHandleVolumeKeysInWM = mContext.getResources().getBoolean( com.android.internal.R.bool.config_handleVolumeKeysInWindowManager); readConfigurationDependentBehaviors(); mAccessibilityManager = (AccessibilityManager) context.getSystemService( Loading Loading @@ -3544,11 +3549,18 @@ public class PhoneWindowManager implements WindowManagerPolicy { } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) { if (mUseTvRouting) { // On TVs volume keys never go to the foreground app. if (mUseTvRouting || mHandleVolumeKeysInWM) { // On TVs or when the configuration is enabled, volume keys never // go to the foreground app. dispatchDirectAudioEvent(event); return -1; } // If the device is in Vr mode, drop the volume keys and don't // forward it to the application/dispatch the audio event. if (mPersistentVrModeEnabled) { return -1; } } else if (keyCode == KeyEvent.KEYCODE_TAB && event.isMetaPressed()) { // Pass through keyboard navigation keys. return 0; Loading Loading @@ -5957,8 +5969,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } } if (mUseTvRouting) { // On TVs, defer special key handlings to if (mUseTvRouting || mHandleVolumeKeysInWM) { // Defer special key handlings to // {@link interceptKeyBeforeDispatching()}. result |= ACTION_PASS_TO_USER; } else if ((result & ACTION_PASS_TO_USER) == 0) { Loading Loading
core/res/res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -2872,4 +2872,8 @@ <!-- Additional non-platform defined secure settings exposed to Instant Apps --> <string-array name="config_allowedSecureInstantAppSettings"></string-array> <!-- Handle volume keys directly in Window Manager without passing them to the foreground app --> <bool name="config_handleVolumeKeysInWindowManager">false</bool> </resources>
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -3010,4 +3010,5 @@ <java-symbol type="array" name="config_allowedSystemInstantAppSettings" /> <java-symbol type="array" name="config_allowedSecureInstantAppSettings" /> <java-symbol type="bool" name="config_handleVolumeKeysInWindowManager" /> </resources>
services/core/java/com/android/server/policy/PhoneWindowManager.java +16 −4 Original line number Diff line number Diff line Loading @@ -584,6 +584,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean mTranslucentDecorEnabled = true; boolean mUseTvRouting; private boolean mHandleVolumeKeysInWM; int mPointerLocationMode = 0; // guarded by mLock // The last window we were told about in focusChanged. Loading Loading @@ -1938,6 +1940,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { mUseTvRouting = AudioSystem.getPlatformType(mContext) == AudioSystem.PLATFORM_TELEVISION; mHandleVolumeKeysInWM = mContext.getResources().getBoolean( com.android.internal.R.bool.config_handleVolumeKeysInWindowManager); readConfigurationDependentBehaviors(); mAccessibilityManager = (AccessibilityManager) context.getSystemService( Loading Loading @@ -3544,11 +3549,18 @@ public class PhoneWindowManager implements WindowManagerPolicy { } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) { if (mUseTvRouting) { // On TVs volume keys never go to the foreground app. if (mUseTvRouting || mHandleVolumeKeysInWM) { // On TVs or when the configuration is enabled, volume keys never // go to the foreground app. dispatchDirectAudioEvent(event); return -1; } // If the device is in Vr mode, drop the volume keys and don't // forward it to the application/dispatch the audio event. if (mPersistentVrModeEnabled) { return -1; } } else if (keyCode == KeyEvent.KEYCODE_TAB && event.isMetaPressed()) { // Pass through keyboard navigation keys. return 0; Loading Loading @@ -5957,8 +5969,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } } if (mUseTvRouting) { // On TVs, defer special key handlings to if (mUseTvRouting || mHandleVolumeKeysInWM) { // Defer special key handlings to // {@link interceptKeyBeforeDispatching()}. result |= ACTION_PASS_TO_USER; } else if ((result & ACTION_PASS_TO_USER) == 0) { Loading