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
This commit is contained in:
Michael Wright
2015-09-03 17:57:01 +01:00
parent 4e4d59eeef
commit 9209c9cd9a
12 changed files with 669 additions and 4 deletions

View File

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

View File

@@ -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;
}
@@ -338,6 +366,23 @@ public final class InputManager {
return -1;
}
/**
* 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.
*