Merge "HotwordDetectionService: Remove deprecated-at-birth APIs." into sc-dev am: 3cff27f756
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14676746 Change-Id: I7c0408bcfe2a7be50fdc8100a7c49d74cfb710f8
This commit is contained in:
@@ -10561,9 +10561,7 @@ package android.service.voice {
|
|||||||
ctor public HotwordDetectionService();
|
ctor public HotwordDetectionService();
|
||||||
method public static int getMaxCustomInitializationStatus();
|
method public static int getMaxCustomInitializationStatus();
|
||||||
method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
|
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 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.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 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);
|
method public void onUpdateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, long, @Nullable java.util.function.IntConsumer);
|
||||||
@@ -10608,7 +10606,6 @@ package android.service.voice {
|
|||||||
public class VoiceInteractionService extends android.app.Service {
|
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 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 @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.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();
|
method @NonNull @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -228,36 +228,6 @@ public abstract class HotwordDetectionService extends Service {
|
|||||||
return MAXIMUM_NUMBER_OF_INITIALIZATION_STATUS_CUSTOM_ERROR;
|
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}.
|
|
||||||
* <p>
|
|
||||||
* 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
|
* 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}.
|
* 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?
|
// 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.
|
|
||||||
* <p>
|
|
||||||
* 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}.
|
|
||||||
* <p>
|
|
||||||
* 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
|
* Called when the {@link VoiceInteractionService} requests that this service
|
||||||
* {@link HotwordDetector#startRecognition() start} hotword recognition on audio coming directly
|
* {@link HotwordDetector#startRecognition() start} hotword recognition on audio coming directly
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import android.content.ComponentName;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.hardware.soundtrigger.KeyphraseEnrollmentInfo;
|
import android.hardware.soundtrigger.KeyphraseEnrollmentInfo;
|
||||||
import android.media.AudioFormat;
|
|
||||||
import android.media.voice.KeyphraseModelManager;
|
import android.media.voice.KeyphraseModelManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -390,64 +389,6 @@ public class VoiceInteractionService extends Service {
|
|||||||
return mHotwordDetector;
|
return mHotwordDetector;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a {@link HotwordDetector} and initializes the application's
|
|
||||||
* {@link HotwordDetectionService} using {@code options} and {code sharedMemory}.
|
|
||||||
*
|
|
||||||
* <p>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}.
|
|
||||||
*
|
|
||||||
* <p>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.
|
|
||||||
*
|
|
||||||
* <p>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
|
* Creates a {@link HotwordDetector} and initializes the application's
|
||||||
* {@link HotwordDetectionService} using {@code options} and {code sharedMemory}.
|
* {@link HotwordDetectionService} using {@code options} and {code sharedMemory}.
|
||||||
|
|||||||
Reference in New Issue
Block a user