script-astra/Android/Sdk/sources/android-35/android/service/voice/SandboxedDetectionInitializer.java
localadmin 4380f00a78 init
2025-01-20 18:15:20 +03:00

120 lines
4.4 KiB
Java
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.service.voice;
import android.annotation.DurationMillisLong;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Bundle;
import android.os.IRemoteCallback;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.SharedMemory;
import java.util.function.IntConsumer;
/**
* Provides common initialzation methods for sandboxed detection services.
*
* @hide
*/
@SystemApi
public interface SandboxedDetectionInitializer {
/**
* Indicates that the updated status is successful.
*/
int INITIALIZATION_STATUS_SUCCESS = 0;
/**
* Indicates that the callback wasnt invoked within the timeout.
* This is used by system.
*/
int INITIALIZATION_STATUS_UNKNOWN = 100;
/** @hide */
String KEY_INITIALIZATION_STATUS = "initialization_status";
/**
* The maximum number of initialization status for some application specific failed reasons.
*
* @hide
*/
int MAXIMUM_NUMBER_OF_INITIALIZATION_STATUS_CUSTOM_ERROR = 2;
/**
* Returns the maximum number of initialization status for some application specific failed
* reasons.
*
* Note: The value 0 is reserved for success.
*/
static int getMaxCustomInitializationStatus() {
return MAXIMUM_NUMBER_OF_INITIALIZATION_STATUS_CUSTOM_ERROR;
}
/**
* Creates a {@link IntConsumer} that sends the initialization status to the
* {@link VoiceInteractionService} via {@link IRemoteCallback}.
*
* @hide
*/
static IntConsumer createInitializationStatusConsumer(IRemoteCallback callback) {
IntConsumer intConsumer = null;
if (callback != null) {
intConsumer =
value -> {
if (value > SandboxedDetectionInitializer
.getMaxCustomInitializationStatus()) {
throw new IllegalArgumentException(
"The initialization status is invalid for " + value);
}
try {
Bundle status = new Bundle();
status.putInt(KEY_INITIALIZATION_STATUS, value);
callback.sendResult(status);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
};
}
return intConsumer;
}
/**
* Called when sandboxed detectors that extend {@link HotwordDetector} are created or
* {@link HotwordDetector#updateState(PersistableBundle, SharedMemory)} requests an
* update of the sandboxed detection parameters.
*
* @param options Application configuration data to provide to sandboxed detection services.
* PersistableBundle does not allow any remotable objects or other contents that can be used to
* communicate with other processes.
* @param sharedMemory The unrestricted data blob to provide to sandboxed detection services.
* Use this to provide model data or other such data to the trusted process.
* @param callbackTimeoutMillis Timeout in milliseconds for the operation to invoke the
* statusCallback.
* @param statusCallback Use this to return the updated result; the allowed values are
* {@link #INITIALIZATION_STATUS_SUCCESS}, 1<->{@link #getMaxCustomInitializationStatus()}.
* This is non-null only when sandboxed detection services are being initialized; and it
* is null if the state is updated after that.
*/
void onUpdateState(
@Nullable PersistableBundle options,
@Nullable SharedMemory sharedMemory,
@DurationMillisLong long callbackTimeoutMillis,
@Nullable IntConsumer statusCallback);
}