Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8222e55 authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Multi-window assist callback

Introducing a new callback in VoiceInteractionSession to
provide assist data for additional activities in the
foreground in a multiwindow setup.

PIP, docked windows and free-form windows (top-most)
will be queried for assist data and passed through the
new API to the Voice Interaction service.

Bug: 27718385

Change-Id: Ib4427c304611b75c2078dcb54f1f7e47ae7d9cfa
parent bdae9296
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -34941,6 +34941,7 @@ package android.service.voice {
    method public void onDestroy();
    method public boolean[] onGetSupportedCommands(java.lang.String[]);
    method public void onHandleAssist(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent);
    method public void onHandleAssistSecondary(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent, int, int);
    method public void onHandleScreenshot(android.graphics.Bitmap);
    method public void onHide();
    method public boolean onKeyDown(int, android.view.KeyEvent);
+1 −0
Original line number Diff line number Diff line
@@ -37515,6 +37515,7 @@ package android.service.voice {
    method public void onDestroy();
    method public boolean[] onGetSupportedCommands(java.lang.String[]);
    method public void onHandleAssist(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent);
    method public void onHandleAssistSecondary(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent, int, int);
    method public void onHandleScreenshot(android.graphics.Bitmap);
    method public void onHide();
    method public boolean onKeyDown(int, android.view.KeyEvent);
+1 −0
Original line number Diff line number Diff line
@@ -35014,6 +35014,7 @@ package android.service.voice {
    method public void onDestroy();
    method public boolean[] onGetSupportedCommands(java.lang.String[]);
    method public void onHandleAssist(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent);
    method public void onHandleAssistSecondary(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent, int, int);
    method public void onHandleScreenshot(android.graphics.Bitmap);
    method public void onHide();
    method public boolean onKeyDown(int, android.view.KeyEvent);
+8 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import android.service.voice.IVoiceInteractionSession;

import com.android.internal.app.IVoiceInteractor;

import java.util.List;

/**
 * Activity manager local system service interface.
 *
@@ -125,4 +127,10 @@ public abstract class ActivityManagerInternal {
     * Callback for window manager to let activity manager know that the app transition is finished.
     */
    public abstract void notifyAppTransitionFinished();

    /**
     * Returns the top activity from each of the currently visible stacks. The first entry will be
     * the focused activity.
     */
    public abstract List<IBinder> getTopVisibleActivities();
}
+8 −2
Original line number Diff line number Diff line
@@ -2411,8 +2411,11 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
            data.enforceInterface(IActivityManager.descriptor);
            int requestType = data.readInt();
            IResultReceiver receiver = IResultReceiver.Stub.asInterface(data.readStrongBinder());
            Bundle receiverExtras = data.readBundle();
            IBinder activityToken = data.readStrongBinder();
            boolean res = requestAssistContextExtras(requestType, receiver, activityToken);
            boolean focused = data.readInt() == 1;
            boolean res = requestAssistContextExtras(requestType, receiver, receiverExtras,
                    activityToken, focused);
            reply.writeNoException();
            reply.writeInt(res ? 1 : 0);
            return true;
@@ -6080,13 +6083,16 @@ class ActivityManagerProxy implements IActivityManager
    }

    public boolean requestAssistContextExtras(int requestType, IResultReceiver receiver,
            IBinder activityToken) throws RemoteException {
            Bundle receiverExtras,
            IBinder activityToken, boolean focused) throws RemoteException {
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        data.writeInterfaceToken(IActivityManager.descriptor);
        data.writeInt(requestType);
        data.writeStrongBinder(receiver.asBinder());
        data.writeBundle(receiverExtras);
        data.writeStrongBinder(activityToken);
        data.writeInt(focused ? 1 : 0);
        mRemote.transact(REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0);
        reply.readException();
        boolean res = reply.readInt() != 0;
Loading