Merge "Ambient Activation p1.1" into main

This commit is contained in:
Faye Yan
2023-08-03 15:08:22 +00:00
committed by Android (Google) Code Review
5 changed files with 36 additions and 10 deletions

View File

@@ -65,6 +65,13 @@ abstract class AbstractDetector implements HotwordDetector {
*/
private final IBinder mToken = new Binder();
/**
* A flag controls whether attributionTag will be passed into the Identity.
* TODO(b/289087412): This flag will be converted and confirm to the trunk stable flag
* configuration.
*/
static final boolean IS_IDENTITY_WITH_ATTRIBUTION_TAG = false;
AbstractDetector(
IVoiceInteractionManagerService managerService,
Executor executor,
@@ -153,12 +160,16 @@ abstract class AbstractDetector implements HotwordDetector {
@Nullable PersistableBundle options,
@Nullable SharedMemory sharedMemory,
@NonNull IHotwordRecognitionStatusCallback callback,
int detectorType) {
int detectorType,
@Nullable String attributionTag) {
if (DEBUG) {
Slog.d(TAG, "initAndVerifyDetector()");
}
Identity identity = new Identity();
identity.packageName = ActivityThread.currentOpPackageName();
if (IS_IDENTITY_WITH_ATTRIBUTION_TAG) {
identity.attributionTag = attributionTag;
}
try {
mManagerService.initAndVerifyDetector(identity, options, sharedMemory, mToken, callback,
detectorType);

View File

@@ -324,6 +324,7 @@ public class AlwaysOnHotwordDetector extends AbstractDetector {
private final Handler mHandler;
private final IBinder mBinder = new Binder();
private final boolean mSupportSandboxedDetectionService;
private final String mAttributionTag;
@GuardedBy("mLock")
private boolean mIsAvailabilityOverriddenByTestApi = false;
@@ -846,13 +847,17 @@ public class AlwaysOnHotwordDetector extends AbstractDetector {
* @param targetSdkVersion The target SDK version.
* @param SupportSandboxedDetectionService {@code true} if HotwordDetectionService should be
* triggered, otherwise {@code false}.
* @param attributionTag an optional attribution tag passed form the
* {@link VoiceInteractionService} context via the
* {@link createAlwaysOnHotwordDetectorInternal(String, Locale, boolean, PersistableBundle,
* SharedMemory, ModuleProperties, Executor, Callback)}.
*
* @hide
*/
public AlwaysOnHotwordDetector(String text, Locale locale, Executor executor, Callback callback,
KeyphraseEnrollmentInfo keyphraseEnrollmentInfo,
IVoiceInteractionManagerService modelManagementService, int targetSdkVersion,
boolean supportSandboxedDetectionService) {
boolean supportSandboxedDetectionService, @Nullable String attributionTag) {
super(modelManagementService, executor, callback);
mHandler = new MyHandler(Looper.getMainLooper());
@@ -865,6 +870,7 @@ public class AlwaysOnHotwordDetector extends AbstractDetector {
mInternalCallback = new SoundTriggerListener(mHandler);
mModelManagementService = modelManagementService;
mSupportSandboxedDetectionService = supportSandboxedDetectionService;
mAttributionTag = attributionTag;
}
// Do nothing. This method should not be abstract.
@@ -876,11 +882,14 @@ public class AlwaysOnHotwordDetector extends AbstractDetector {
@Nullable SoundTrigger.ModuleProperties moduleProperties) {
if (mSupportSandboxedDetectionService) {
initAndVerifyDetector(options, sharedMemory, mInternalCallback,
DETECTOR_TYPE_TRUSTED_HOTWORD_DSP);
DETECTOR_TYPE_TRUSTED_HOTWORD_DSP, mAttributionTag);
}
try {
Identity identity = new Identity();
identity.packageName = ActivityThread.currentOpPackageName();
if (IS_IDENTITY_WITH_ATTRIBUTION_TAG) {
identity.attributionTag = mAttributionTag;
}
if (moduleProperties == null) {
moduleProperties = mModelManagementService
.listModuleProperties(identity)

View File

@@ -56,12 +56,14 @@ class SoftwareHotwordDetector extends AbstractDetector {
private final HotwordDetector.Callback mCallback;
private final AudioFormat mAudioFormat;
private final Executor mExecutor;
private final String mAttributionTag;
SoftwareHotwordDetector(
IVoiceInteractionManagerService managerService,
AudioFormat audioFormat,
Executor executor,
HotwordDetector.Callback callback) {
HotwordDetector.Callback callback,
String attributionTag) {
super(managerService, executor, callback);
mManagerService = managerService;
@@ -69,13 +71,14 @@ class SoftwareHotwordDetector extends AbstractDetector {
mCallback = callback;
mExecutor = executor != null ? executor : new HandlerExecutor(
new Handler(Looper.getMainLooper()));
mAttributionTag = attributionTag;
}
@Override
void initialize(@Nullable PersistableBundle options, @Nullable SharedMemory sharedMemory) {
initAndVerifyDetector(options, sharedMemory,
new InitializationStateListener(mExecutor, mCallback),
DETECTOR_TYPE_TRUSTED_HOTWORD_SOFTWARE);
DETECTOR_TYPE_TRUSTED_HOTWORD_SOFTWARE, mAttributionTag);
}
void onDetectorRemoteException() {

View File

@@ -60,15 +60,17 @@ public class VisualQueryDetector {
private final Executor mExecutor;
private final IVoiceInteractionManagerService mManagerService;
private final VisualQueryDetectorInitializationDelegate mInitializationDelegate;
private final String mAttributionTag;
VisualQueryDetector(
IVoiceInteractionManagerService managerService,
@NonNull @CallbackExecutor Executor executor,
Callback callback) {
Callback callback, @Nullable String attributionTag) {
mManagerService = managerService;
mCallback = callback;
mExecutor = executor;
mInitializationDelegate = new VisualQueryDetectorInitializationDelegate();
mAttributionTag = attributionTag;
}
/**
@@ -246,7 +248,7 @@ public class VisualQueryDetector {
void initialize(@Nullable PersistableBundle options, @Nullable SharedMemory sharedMemory) {
initAndVerifyDetector(options, sharedMemory,
new InitializationStateListener(mExecutor, mCallback),
DETECTOR_TYPE_VISUAL_QUERY_DETECTOR);
DETECTOR_TYPE_VISUAL_QUERY_DETECTOR, mAttributionTag);
}
@Override

View File

@@ -734,7 +734,7 @@ public class VoiceInteractionService extends Service {
AlwaysOnHotwordDetector dspDetector = new AlwaysOnHotwordDetector(keyphrase, locale,
executor, callback, mKeyphraseEnrollmentInfo, mSystemService,
getApplicationContext().getApplicationInfo().targetSdkVersion,
supportHotwordDetectionService);
supportHotwordDetectionService, getAttributionTag());
mActiveDetectors.add(dspDetector);
try {
@@ -895,7 +895,7 @@ public class VoiceInteractionService extends Service {
SoftwareHotwordDetector softwareHotwordDetector =
new SoftwareHotwordDetector(mSystemService, /* audioFormat= */ null,
executor, callback);
executor, callback, getAttributionTag());
mActiveDetectors.add(softwareHotwordDetector);
try {
@@ -965,7 +965,8 @@ public class VoiceInteractionService extends Service {
}
VisualQueryDetector visualQueryDetector =
new VisualQueryDetector(mSystemService, executor, callback);
new VisualQueryDetector(mSystemService, executor, callback,
getAttributionTag());
HotwordDetector visualQueryDetectorInitializationDelegate =
visualQueryDetector.getInitializationDelegate();
mActiveDetectors.add(visualQueryDetectorInitializationDelegate);