diff options
author | nadlabak <pavel@doshaska.net> | 2013-05-13 17:41:57 +0200 |
---|---|---|
committer | nadlabak <pavel@doshaska.net> | 2013-09-17 01:23:58 +0200 |
commit | 22a4d65f66a6155a60d77a22922c195fb22a1bd6 (patch) | |
tree | d282a402ce56e1bcb66eb515bbe08d19c568f781 /services/java/com/android | |
parent | d8574e9aa82071f85b751e1f7dccd19759ffc7a9 (diff) | |
download | frameworks_base-22a4d65f66a6155a60d77a22922c195fb22a1bd6.zip frameworks_base-22a4d65f66a6155a60d77a22922c195fb22a1bd6.tar.gz frameworks_base-22a4d65f66a6155a60d77a22922c195fb22a1bd6.tar.bz2 |
Re-implement orientation aware volume buttons at lower level
Rework of http://review.cyanogenmod.org/31979
Fixes:
1. inconsistent volume button behaviour depending on app in use
- the buttons were not swapped for some NDK/OPENSL ES apps like
e.g. MX Player
2. the function of volume buttons on external input devices like BT/USB
keyboards should not be affected by the main unit orientation
This commit finishes http://review.cyanogenmod.org/18273 - use of system
property has been replaced with config push via JNI as suggested during
the original review.
Patch Set 7: Circumvent the need for "keyboard.orientationAware = 1" idc
Patch Set 8: Don't leak implementation details outside InputReader
Change-Id: I19cc60cb0acb0005ab13fa069f52e3d468d694e7
Diffstat (limited to 'services/java/com/android')
-rw-r--r-- | services/java/com/android/server/input/InputManagerService.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/services/java/com/android/server/input/InputManagerService.java b/services/java/com/android/server/input/InputManagerService.java index a1d52d3..c700b66 100644 --- a/services/java/com/android/server/input/InputManagerService.java +++ b/services/java/com/android/server/input/InputManagerService.java @@ -182,6 +182,7 @@ public class InputManagerService extends IInputManager.Stub private static native void nativeSetPointerSpeed(int ptr, int speed); private static native void nativeSetShowTouches(int ptr, boolean enabled); private static native void nativeSetStylusIconEnabled(int ptr, boolean enabled); + private static native void nativeSetVolumeKeysRotation(int ptr, int mode); private static native void nativeVibrate(int ptr, int deviceId, long[] pattern, int repeat, int token); private static native void nativeCancelVibrate(int ptr, int deviceId, int token); @@ -273,6 +274,7 @@ public class InputManagerService extends IInputManager.Stub registerPointerSpeedSettingObserver(); registerShowTouchesSettingObserver(); registerStylusIconEnabledSettingObserver(); + registerVolumeKeysRotationSettingObserver(); mContext.registerReceiver(new BroadcastReceiver() { @Override @@ -285,6 +287,7 @@ public class InputManagerService extends IInputManager.Stub updatePointerSpeedFromSettings(); updateShowTouchesFromSettings(); updateStylusIconEnabledFromSettings(); + updateVolumeKeysRotationFromSettings(); } // TODO(BT) Pass in paramter for bluetooth system @@ -1197,6 +1200,23 @@ public class InputManagerService extends IInputManager.Stub return result; } + public void updateVolumeKeysRotationFromSettings() { + int mode = Settings.System.getInt(mContext.getContentResolver(), + Settings.System.SWAP_VOLUME_KEYS_ON_ROTATION, 0); + nativeSetVolumeKeysRotation(mPtr, mode); + } + + public void registerVolumeKeysRotationSettingObserver() { + mContext.getContentResolver().registerContentObserver( + Settings.System.getUriFor(Settings.System.SWAP_VOLUME_KEYS_ON_ROTATION), false, + new ContentObserver(mHandler) { + @Override + public void onChange(boolean selfChange) { + updateVolumeKeysRotationFromSettings(); + } + }); + } + public void updateShowTouchesFromSettings() { int setting = getShowTouchesSetting(0); nativeSetShowTouches(mPtr, setting != 0); |