Receive assistant progress and start commands from launcher
Bug: 112934365 Test: manual Change-Id: Id3e8a104f10940f4db87fb2986a424555214d97e
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package com.android.systemui.shared.recents;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
/**
|
||||
@@ -82,4 +83,13 @@ interface ISystemUiProxy {
|
||||
*/
|
||||
boolean supportsRoundedCornersOnWindows() = 11;
|
||||
|
||||
/**
|
||||
* Proxies the assistant gesture's progress started from navigation bar.
|
||||
*/
|
||||
void onAssistantProgress(float progress) = 12;
|
||||
|
||||
/**
|
||||
* Start the assistant.
|
||||
*/
|
||||
void startAssistant(in Bundle bundle) = 13;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SUP
|
||||
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS;
|
||||
|
||||
import android.annotation.FloatRange;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
@@ -269,6 +270,30 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
|
||||
}
|
||||
}
|
||||
|
||||
public void onAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {
|
||||
if (!verifyCaller("onAssistantProgress")) {
|
||||
return;
|
||||
}
|
||||
long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mHandler.post(() -> notifyAssistantProgress(progress));
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
}
|
||||
|
||||
public void startAssistant(Bundle bundle) {
|
||||
if (!verifyCaller("startAssistant")) {
|
||||
return;
|
||||
}
|
||||
long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mHandler.post(() -> notifyStartAssistant(bundle));
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean verifyCaller(String reason) {
|
||||
final int callerId = Binder.getCallingUserHandle().getIdentifier();
|
||||
if (callerId != mCurrentBoundedUserId) {
|
||||
@@ -590,6 +615,18 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {
|
||||
for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) {
|
||||
mConnectionCallbacks.get(i).onAssistantProgress(progress);
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyStartAssistant(Bundle bundle) {
|
||||
for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) {
|
||||
mConnectionCallbacks.get(i).startAssistant(bundle);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateEnabledState() {
|
||||
mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent,
|
||||
MATCH_DIRECT_BOOT_UNAWARE,
|
||||
@@ -637,5 +674,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
|
||||
default void onOverviewShown(boolean fromHome) {}
|
||||
default void onQuickScrubStarted() {}
|
||||
default void onBackButtonAlphaChanged(float alpha, boolean animate) {}
|
||||
default void onAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {}
|
||||
default void startAssistant(Bundle bundle) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,6 +184,11 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
|
||||
updateScreenPinningGestures();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAssistant(Bundle bundle) {
|
||||
mAssistManager.startAssist(bundle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackButtonAlphaChanged(float alpha, boolean animate) {
|
||||
final ButtonDispatcher backButton = mNavigationBarView.getBackButton();
|
||||
|
||||
Reference in New Issue
Block a user