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

This commit is contained in:
TreeHugger Robot
2017-05-04 11:26:53 +00:00
committed by Android (Google) Code Review
3 changed files with 21 additions and 4 deletions

View File

@@ -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>

View File

@@ -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>

View File

@@ -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) {