diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 15a865f73708c..f20bc86742257 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -10563,9 +10563,7 @@ package android.service.voice { ctor public HotwordDetectionService(); method public static int getMaxCustomInitializationStatus(); method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent); - method @Deprecated public void onDetect(@NonNull android.os.ParcelFileDescriptor, @NonNull android.media.AudioFormat, long, @NonNull android.service.voice.HotwordDetectionService.Callback); method public void onDetect(@NonNull android.service.voice.AlwaysOnHotwordDetector.EventPayload, long, @NonNull android.service.voice.HotwordDetectionService.Callback); - method @Deprecated public void onDetect(@NonNull android.os.ParcelFileDescriptor, @NonNull android.media.AudioFormat, @NonNull android.service.voice.HotwordDetectionService.Callback); method public void onDetect(@NonNull android.service.voice.HotwordDetectionService.Callback); method public void onDetect(@NonNull android.os.ParcelFileDescriptor, @NonNull android.media.AudioFormat, @Nullable android.os.PersistableBundle, @NonNull android.service.voice.HotwordDetectionService.Callback); method public void onUpdateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, long, @Nullable java.util.function.IntConsumer); @@ -10610,7 +10608,6 @@ package android.service.voice { public class VoiceInteractionService extends android.app.Service { method @NonNull public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback); method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, @Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, android.service.voice.AlwaysOnHotwordDetector.Callback); - method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.HotwordDetector createHotwordDetector(@NonNull android.media.AudioFormat, @Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull android.service.voice.HotwordDetector.Callback); method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.HotwordDetector createHotwordDetector(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull android.service.voice.HotwordDetector.Callback); method @NonNull @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager(); } diff --git a/core/java/android/service/voice/HotwordDetectionService.java b/core/java/android/service/voice/HotwordDetectionService.java index 3960e3864e1f2..7dd3a1dd5ea73 100644 --- a/core/java/android/service/voice/HotwordDetectionService.java +++ b/core/java/android/service/voice/HotwordDetectionService.java @@ -228,36 +228,6 @@ public abstract class HotwordDetectionService extends Service { return MAXIMUM_NUMBER_OF_INITIALIZATION_STATUS_CUSTOM_ERROR; } - /** - * Called when the device hardware (such as a DSP) detected the hotword, to request second stage - * validation before handing over the audio to the {@link AlwaysOnHotwordDetector}. - *
- * After {@code callback} is invoked or {@code timeoutMillis} has passed, the system closes - * {@code audioStream} and invokes the appropriate {@link AlwaysOnHotwordDetector.Callback - * callback}. - * - * @param audioStream Stream containing audio bytes returned from DSP - * @param audioFormat Format of the supplied audio - * @param timeoutMillis Timeout in milliseconds for the operation to invoke the callback. If - * the application fails to abide by the timeout, system will close the - * microphone and cancel the operation. - * @param callback The callback to use for responding to the detection request. - * @deprecated Implement - * {@link #onDetect(AlwaysOnHotwordDetector.EventPayload, long, Callback)} instead. - * - * @hide - */ - @Deprecated - @SystemApi - public void onDetect( - @NonNull ParcelFileDescriptor audioStream, - @NonNull AudioFormat audioFormat, - @DurationMillisLong long timeoutMillis, - @NonNull Callback callback) { - // TODO: Add a helpful error message. - throw new UnsupportedOperationException(); - } - /** * Called when the device hardware (such as a DSP) detected the hotword, to request second stage * validation before handing over the audio to the {@link AlwaysOnHotwordDetector}. @@ -314,34 +284,6 @@ public abstract class HotwordDetectionService extends Service { // TODO: Handle the unimplemented case by throwing? } - /** - * Called when the {@link VoiceInteractionService} requests that this service - * {@link HotwordDetector#startRecognition() start} hotword recognition on audio coming directly - * from the device microphone. - *
- * On such a request, the system streams mic audio to this service through {@code audioStream}. - * Audio is streamed until {@link HotwordDetector#stopRecognition()} is called, at which point - * the system closes {code audioStream}. - *
- * On successful detection of a hotword within {@code audioStream}, call - * {@link Callback#onDetected(HotwordDetectedResult)}. The system continues to stream audio - * through {@code audioStream}; {@code callback} is reusable. - * - * @param audioStream Stream containing audio bytes returned from a microphone - * @param audioFormat Format of the supplied audio - * @param callback The callback to use for responding to the detection request. - * {@link Callback#onRejected(HotwordRejectedResult) callback.onRejected} cannot be used here. - * @deprecated Implement {@link #onDetect(Callback)} instead. - */ - @Deprecated - public void onDetect( - @NonNull ParcelFileDescriptor audioStream, - @NonNull AudioFormat audioFormat, - @NonNull Callback callback) { - // TODO: Add a helpful error message. - throw new UnsupportedOperationException(); - } - /** * Called when the {@link VoiceInteractionService} requests that this service * {@link HotwordDetector#startRecognition() start} hotword recognition on audio coming directly diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java index b5c838b1871b1..6a0fec7902422 100644 --- a/core/java/android/service/voice/VoiceInteractionService.java +++ b/core/java/android/service/voice/VoiceInteractionService.java @@ -29,7 +29,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.hardware.soundtrigger.KeyphraseEnrollmentInfo; -import android.media.AudioFormat; import android.media.voice.KeyphraseModelManager; import android.os.Bundle; import android.os.Handler; @@ -390,64 +389,6 @@ public class VoiceInteractionService extends Service { return mHotwordDetector; } - /** - * Creates a {@link HotwordDetector} and initializes the application's - * {@link HotwordDetectionService} using {@code options} and {code sharedMemory}. - * - *
To be able to call this, you need to set android:hotwordDetectionService in the - * android.voice_interaction metadata file to a valid hotword detection service, and set - * android:isolatedProcess="true" in the hotword detection service's declaration. Otherwise, - * this throws an {@link IllegalStateException}. - * - *
This instance must be retained and used by the client. - * Calling this a second time invalidates the previously created hotword detector - * which can no longer be used to manage recognition. - * - *
Using this has a noticeable impact on battery, since the microphone is kept open - * for the lifetime of the recognition {@link HotwordDetector#startRecognition() session}. On - * devices where hardware filtering is available (such as through a DSP), it's highly - * recommended to use {@link #createAlwaysOnHotwordDetector} instead. - * - * @param audioFormat Format of the audio to be passed to {@link HotwordDetectionService}. - * @param options Application configuration data to be provided to the - * {@link HotwordDetectionService}. 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 be provided to the - * {@link HotwordDetectionService}. Use this to provide hotword models or other such data to the - * sandboxed process. - * @param callback The callback to notify of detection events. - * @return A hotword detector for the given audio format. - * - * @see #createAlwaysOnHotwordDetector(String, Locale, PersistableBundle, SharedMemory, - * AlwaysOnHotwordDetector.Callback) - * @deprecated Use - * {@link #createHotwordDetector(PersistableBundle, SharedMemory, HotwordDetector.Callback)} - * instead. - * - * @hide - */ - @Deprecated - @SystemApi - @RequiresPermission(Manifest.permission.MANAGE_HOTWORD_DETECTION) - @NonNull - public final HotwordDetector createHotwordDetector( - @NonNull AudioFormat audioFormat, - @Nullable PersistableBundle options, - @Nullable SharedMemory sharedMemory, - @NonNull HotwordDetector.Callback callback) { - if (mSystemService == null) { - throw new IllegalStateException("Not available until onReady() is called"); - } - synchronized (mLock) { - // Allow only one concurrent recognition via the APIs. - safelyShutdownHotwordDetector(); - mSoftwareHotwordDetector = - new SoftwareHotwordDetector( - mSystemService, audioFormat, options, sharedMemory, callback); - } - return mSoftwareHotwordDetector; - } - /** * Creates a {@link HotwordDetector} and initializes the application's * {@link HotwordDetectionService} using {@code options} and {code sharedMemory}.