summaryrefslogtreecommitdiffstats
path: root/services/java/com/android
diff options
context:
space:
mode:
authornadlabak <pavel@doshaska.net>2013-05-13 17:41:57 +0200
committernadlabak <pavel@doshaska.net>2013-09-17 01:23:58 +0200
commit22a4d65f66a6155a60d77a22922c195fb22a1bd6 (patch)
treed282a402ce56e1bcb66eb515bbe08d19c568f781 /services/java/com/android
parentd8574e9aa82071f85b751e1f7dccd19759ffc7a9 (diff)
downloadframeworks_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.java20
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);