summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/test-current.txt2
-rw-r--r--core/java/android/app/StatusBarManager.java23
-rw-r--r--core/java/android/provider/Settings.java2
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBarService.aidl1
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarManagerService.java12
5 files changed, 40 insertions, 0 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 7107bf7419e5..e93467b90e68 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -415,6 +415,7 @@ package android.app {
method public void clickNotification(@Nullable String, int, int, boolean);
method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void collapsePanels();
method public void expandNotificationsPanel();
+ method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public int getLastSystemKey();
method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void handleSystemKey(int);
method public void sendNotificationFeedback(@Nullable String, @Nullable android.os.Bundle);
method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setExpansionDisabledForSimNetworkLock(boolean);
@@ -2628,6 +2629,7 @@ package android.provider {
field public static final String SELECTED_SPELL_CHECKER_SUBTYPE = "selected_spell_checker_subtype";
field public static final String SHOW_FIRST_CRASH_DIALOG_DEV_OPTION = "show_first_crash_dialog_dev_option";
field public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard";
+ field public static final String STYLUS_BUTTONS_ENABLED = "stylus_buttons_enabled";
field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds";
field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
}
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index f74be22569f0..29f774cc39d7 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -752,6 +752,29 @@ public class StatusBarManager {
}
/**
+ * Gets the last handled system key. A system key is a KeyEvent that the
+ * {@link com.android.server.policy.PhoneWindowManager} sends directly to the
+ * status bar, rather than forwarding to apps. If a key has never been sent to the
+ * status bar, will return -1.
+ *
+ * @return the keycode of the last KeyEvent that has been sent to the system.
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.STATUS_BAR)
+ @TestApi
+ public int getLastSystemKey() {
+ try {
+ final IStatusBarService svc = getService();
+ if (svc != null) {
+ return svc.getLastSystemKey();
+ }
+ } catch (RemoteException ex) {
+ throw ex.rethrowFromSystemServer();
+ }
+ return -1;
+ }
+
+ /**
* Expand the settings panel.
*
* @hide
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 893fce21ceec..7ae280fd7d90 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -7414,6 +7414,8 @@ public final class Settings {
*
* @hide
*/
+ @TestApi
+ @Readable
@SuppressLint("NoSettingsProvider")
public static final String STYLUS_BUTTONS_ENABLED = "stylus_buttons_enabled";
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index 8f04cdaf8fde..c1dbc87a2a10 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -111,6 +111,7 @@ interface IStatusBarService
void clickTile(in ComponentName tile);
@UnsupportedAppUsage
void handleSystemKey(in int key);
+ int getLastSystemKey();
/**
* Methods to show toast messages for screen pinning
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 88d64df99d48..35e88c1a2485 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -33,6 +33,7 @@ import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.TestApi;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.ActivityThread;
@@ -178,6 +179,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
private final SessionMonitor mSessionMonitor;
private int mCurrentUserId;
private boolean mTracingEnabled;
+ private int mLastSystemKey = -1;
private final TileRequestTracker mTileRequestTracker;
@@ -905,6 +907,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
return;
}
+ mLastSystemKey = key;
+
if (mBar != null) {
try {
mBar.handleSystemKey(key);
@@ -914,6 +918,14 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
}
@Override
+ @TestApi
+ public int getLastSystemKey() {
+ enforceStatusBar();
+
+ return mLastSystemKey;
+ }
+
+ @Override
public void showPinningEnterExitToast(boolean entering) throws RemoteException {
if (mBar != null) {
try {