diff options
author | Michael Wright <michaelwr@google.com> | 2015-09-03 17:57:01 +0100 |
---|---|---|
committer | Michael Wright <michaelwr@google.com> | 2015-10-12 15:21:37 +0100 |
commit | 9209c9cd9a6f779d0d9d86f9b2e368df564fa6bb (patch) | |
tree | ccee5b1af2c31841fec6fa3cbce9a3aa277549eb /core | |
parent | 4e4d59eeef86fa8560d35c00168869b0a066f962 (diff) | |
download | frameworks_base-9209c9cd9a6f779d0d9d86f9b2e368df564fa6bb.zip frameworks_base-9209c9cd9a6f779d0d9d86f9b2e368df564fa6bb.tar.gz frameworks_base-9209c9cd9a6f779d0d9d86f9b2e368df564fa6bb.tar.bz2 |
Add SystemUI component to watch for keyboard attachment.
Add a new SystemUI component to watch for keyboard attachment /
detachment. If the config specifies the name of a keyboard that is
packaged with the device, then SystemUI will ask the user if they
would like to enable BT (if disabled) and then attempt to pair to the
device.
Bug: 22876536
Change-Id: I786db35524d49706d5e61d8b8bc71194d50113f3
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/hardware/input/IInputManager.aidl | 2 | ||||
-rw-r--r-- | core/java/android/hardware/input/InputManager.java | 45 | ||||
-rw-r--r-- | core/res/AndroidManifest.xml | 5 | ||||
-rw-r--r-- | core/res/res/values/config.xml | 4 | ||||
-rw-r--r-- | core/res/res/values/symbols.xml | 2 |
5 files changed, 56 insertions, 2 deletions
diff --git a/core/java/android/hardware/input/IInputManager.aidl b/core/java/android/hardware/input/IInputManager.aidl index c8b45c7..3601b39 100644 --- a/core/java/android/hardware/input/IInputManager.aidl +++ b/core/java/android/hardware/input/IInputManager.aidl @@ -61,6 +61,8 @@ interface IInputManager { // Registers an input devices changed listener. void registerInputDevicesChangedListener(IInputDevicesChangedListener listener); + // Queries whether the device is currently in tablet mode + int isInTabletMode(); // Registers a tablet mode change listener void registerTabletModeChangedListener(ITabletModeChangedListener listener); diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index a754d6b..618864f 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -19,6 +19,7 @@ package android.hardware.input; import com.android.internal.os.SomeArgs; import com.android.internal.util.ArrayUtils; +import android.annotation.IntDef; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.content.Context; @@ -39,6 +40,8 @@ import android.util.SparseArray; import android.view.InputDevice; import android.view.InputEvent; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.List; @@ -179,6 +182,31 @@ public final class InputManager { */ public static final int INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH = 2; // see InputDispatcher.h + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({SWITCH_STATE_UNKNOWN, SWITCH_STATE_OFF, SWITCH_STATE_ON}) + public @interface SwitchState {} + + /** + * Switch State: Unknown. + * + * The system has yet to report a valid value for the switch. + * @hide + */ + public static final int SWITCH_STATE_UNKNOWN = -1; + + /** + * Switch State: Off. + * @hide + */ + public static final int SWITCH_STATE_OFF = 0; + + /** + * Switch State: On. + * @hide + */ + public static final int SWITCH_STATE_ON = 1; + private InputManager(IInputManager im) { mIm = im; } @@ -339,6 +367,23 @@ public final class InputManager { } /** + * Queries whether the device is in tablet mode. + * + * @return The tablet switch state which is one of {@link #SWITCH_STATE_UNKNOWN}, + * {@link #SWITCH_STATE_OFF} or {@link #SWITCH_STATE_ON}. + * @hide + */ + @SwitchState + public int isInTabletMode() { + try { + return mIm.isInTabletMode(); + } catch (RemoteException ex) { + Log.w(TAG, "Could not get tablet mode state", ex); + return SWITCH_STATE_UNKNOWN; + } + } + + /** * Register a tablet mode changed listener. * * @param listener The listener to register. diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index f13f821..4f71699 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2059,10 +2059,11 @@ <permission android:name="android.permission.SET_KEYBOARD_LAYOUT" android:protectionLevel="signature" /> - <!-- Allows an application to monitor changes in tablet mode. + <!-- Allows an application to query tablet mode state and monitor changes + in it. <p>Not for use by third-party applications. @hide --> - <permission android:name="android.permission.TABLET_MODE_LISTENER" + <permission android:name="android.permission.TABLET_MODE" android:protectionLevel="signature" /> <!-- Allows an application to request installing packages. Apps diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 6e8f81e..6c96f84 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2322,4 +2322,8 @@ <!-- Allow the gesture to double tap the power button twice to start the camera while the device is non-interactive. --> <bool name="config_cameraDoubleTapPowerGestureEnabled">true</bool> + + <!-- The BT name of the keyboard packaged with the device. If this is defined, SystemUI will + automatically try to pair with it when the device exits tablet mode. --> + <string translatable="false" name="config_packagedKeyboardName"></string> </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 95cd143..d469233 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2329,4 +2329,6 @@ <java-symbol type="bool" name="config_cameraDoubleTapPowerGestureEnabled" /> <java-symbol type="drawable" name="platlogo_m" /> + + <java-symbol type="string" name="config_packagedKeyboardName" /> </resources> |