base: add API getSessionStatus to StatusBarService
used in combination with registerSessionListener to get
current status
Change-Id: Iee62aa6131b64fd0d9c8bd9b2ca3d026338e0965
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index bd01afb..4f3c717 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -236,4 +236,5 @@
*/
void toggleCameraFlash();
void toggleCameraFlashState(boolean enable);
+ boolean getSessionStatus(int sessionType);
}
diff --git a/services/core/java/com/android/server/statusbar/SessionMonitor.java b/services/core/java/com/android/server/statusbar/SessionMonitor.java
index f4356bd..321ee67 100644
--- a/services/core/java/com/android/server/statusbar/SessionMonitor.java
+++ b/services/core/java/com/android/server/statusbar/SessionMonitor.java
@@ -44,6 +44,7 @@
private final Context mContext;
private final Map<Integer, Set<ISessionListener>> mSessionToListeners =
new HashMap<>();
+ private final Map<Integer, Boolean> mSessionStatus = new HashMap<>();
/** */
public SessionMonitor(Context context) {
@@ -97,6 +98,8 @@
return;
}
+ mSessionStatus.put(sessionType, true);
+
synchronized (mSessionToListeners) {
for (ISessionListener listener : mSessionToListeners.get(sessionType)) {
try {
@@ -122,6 +125,8 @@
return;
}
+ mSessionStatus.put(sessionType, false);
+
synchronized (mSessionToListeners) {
for (ISessionListener listener : mSessionToListeners.get(sessionType)) {
try {
@@ -133,6 +138,13 @@
}
}
+ public boolean getSessionStatus(@SessionFlags int sessionType) {
+ if (mSessionStatus.containsKey(sessionType)) {
+ return mSessionStatus.get(sessionType);
+ }
+ return false;
+ }
+
private boolean isValidSessionType(@SessionFlags int sessionType) {
return ALL_SESSIONS.contains(sessionType);
}
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 947bac0..4c4853a 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -2246,6 +2246,11 @@
mSessionMonitor.unregisterSessionListener(sessionFlags, listener);
}
+ @Override
+ public boolean getSessionStatus(@SessionFlags int sessionType) {
+ return mSessionMonitor.getSessionStatus(sessionType);
+ }
+
public String[] getStatusBarIcons() {
return mContext.getResources().getStringArray(R.array.config_statusBarIcons);
}