Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a58589bd authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Handle volume keys to apps in Vr mode" into oc-dev

parents 9dee9753 86ecf34c
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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>
+1 −0
Original line number Diff line number Diff line
@@ -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>
+16 −4
Original line number Diff line number Diff line
@@ -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.
@@ -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(
@@ -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;
@@ -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) {