Loading core/java/android/service/voice/VoiceInteractionSession.java +18 −2 Original line number Diff line number Diff line Loading @@ -1095,7 +1095,7 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall if (!mWindowVisible) { mWindowVisible = true; if (mUiEnabled) { mWindow.show(); showWindow(); } } if (showCallback != null) { Loading Loading @@ -1284,9 +1284,25 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } } void showWindow() { if (mWindow != null) { mWindow.show(); try { mSystemService.setSessionWindowVisible(mToken, true); } catch (RemoteException e) { Log.w(TAG, "Failed to notify session window shown", e); } } } void ensureWindowHidden() { if (mWindow != null) { mWindow.hide(); try { mSystemService.setSessionWindowVisible(mToken, false); } catch (RemoteException e) { Log.w(TAG, "Failed to notify session window hidden", e); } } } Loading Loading @@ -1377,7 +1393,7 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall if (mWindowVisible) { if (enabled) { ensureWindowAdded(); mWindow.show(); showWindow(); } else { ensureWindowHidden(); } Loading core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -284,4 +284,9 @@ interface IVoiceInteractionManagerService { * Stops to listen the status of visible activity. */ void stopListeningVisibleActivityChanged(in IBinder token); /** * Notifies when the session window is shown or hidden. */ void setSessionWindowVisible(in IBinder token, boolean visible); } core/java/com/android/internal/app/IVoiceInteractionSessionListener.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,11 @@ */ void onVoiceSessionHidden(); /** * Called when a voice session window is shown/hidden. */ void onVoiceSessionWindowVisibilityChanged(boolean visible); /** * Called when UI hints were received. */ Loading packages/SystemUI/src/com/android/systemui/assist/AssistManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -186,6 +186,14 @@ public class AssistManager { AssistantSessionEvent.ASSISTANT_SESSION_CLOSE); } @Override public void onVoiceSessionWindowVisibilityChanged(boolean visible) throws RemoteException { if (VERBOSE) { Log.v(TAG, "Window visibility changed: " + visible); } } @Override public void onSetUiHints(Bundle hints) { if (VERBOSE) { Loading services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +26 −0 Original line number Diff line number Diff line Loading @@ -1824,6 +1824,32 @@ public class VoiceInteractionManagerService extends SystemService { } } public void setSessionWindowVisible(IBinder token, boolean visible) { synchronized (this) { if (mImpl == null) { Slog.w(TAG, "setSessionWindowVisible called without running voice interaction " + "service"); return; } if (mImpl.mActiveSession == null || token != mImpl.mActiveSession.mToken) { Slog.w(TAG, "setSessionWindowVisible does not match active session"); return; } final long caller = Binder.clearCallingIdentity(); try { mVoiceInteractionSessionListeners.broadcast(listener -> { try { listener.onVoiceSessionWindowVisibilityChanged(visible); } catch (RemoteException e) { Slog.e(TAG, "Error delivering window visibility event to listener.", e); } }); } finally { Binder.restoreCallingIdentity(caller); } } } @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; Loading Loading
core/java/android/service/voice/VoiceInteractionSession.java +18 −2 Original line number Diff line number Diff line Loading @@ -1095,7 +1095,7 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall if (!mWindowVisible) { mWindowVisible = true; if (mUiEnabled) { mWindow.show(); showWindow(); } } if (showCallback != null) { Loading Loading @@ -1284,9 +1284,25 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall } } void showWindow() { if (mWindow != null) { mWindow.show(); try { mSystemService.setSessionWindowVisible(mToken, true); } catch (RemoteException e) { Log.w(TAG, "Failed to notify session window shown", e); } } } void ensureWindowHidden() { if (mWindow != null) { mWindow.hide(); try { mSystemService.setSessionWindowVisible(mToken, false); } catch (RemoteException e) { Log.w(TAG, "Failed to notify session window hidden", e); } } } Loading Loading @@ -1377,7 +1393,7 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall if (mWindowVisible) { if (enabled) { ensureWindowAdded(); mWindow.show(); showWindow(); } else { ensureWindowHidden(); } Loading
core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -284,4 +284,9 @@ interface IVoiceInteractionManagerService { * Stops to listen the status of visible activity. */ void stopListeningVisibleActivityChanged(in IBinder token); /** * Notifies when the session window is shown or hidden. */ void setSessionWindowVisible(in IBinder token, boolean visible); }
core/java/com/android/internal/app/IVoiceInteractionSessionListener.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,11 @@ */ void onVoiceSessionHidden(); /** * Called when a voice session window is shown/hidden. */ void onVoiceSessionWindowVisibilityChanged(boolean visible); /** * Called when UI hints were received. */ Loading
packages/SystemUI/src/com/android/systemui/assist/AssistManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -186,6 +186,14 @@ public class AssistManager { AssistantSessionEvent.ASSISTANT_SESSION_CLOSE); } @Override public void onVoiceSessionWindowVisibilityChanged(boolean visible) throws RemoteException { if (VERBOSE) { Log.v(TAG, "Window visibility changed: " + visible); } } @Override public void onSetUiHints(Bundle hints) { if (VERBOSE) { Loading
services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +26 −0 Original line number Diff line number Diff line Loading @@ -1824,6 +1824,32 @@ public class VoiceInteractionManagerService extends SystemService { } } public void setSessionWindowVisible(IBinder token, boolean visible) { synchronized (this) { if (mImpl == null) { Slog.w(TAG, "setSessionWindowVisible called without running voice interaction " + "service"); return; } if (mImpl.mActiveSession == null || token != mImpl.mActiveSession.mToken) { Slog.w(TAG, "setSessionWindowVisible does not match active session"); return; } final long caller = Binder.clearCallingIdentity(); try { mVoiceInteractionSessionListeners.broadcast(listener -> { try { listener.onVoiceSessionWindowVisibilityChanged(visible); } catch (RemoteException e) { Slog.e(TAG, "Error delivering window visibility event to listener.", e); } }); } finally { Binder.restoreCallingIdentity(caller); } } } @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; Loading