Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a772e5fc authored by Arunesh Mishra's avatar Arunesh Mishra
Browse files

SoundTrigger API improvements.

This CL implements the SoundTrigger API improvements as given in b/22860713. Only the java-level
parts are implemented in this CL.

Key changes include:

* Addition of a SoundTriggerManager/SoundTriggerDetector system API to manage
  the sound-trigger based sound models.
* Addition of a SoundTriggerService service that manages all sound models
  including voice (keyphrase) and sound-trigger based models.
* Includes logic to write sound-trigger based models to the database.
* VoiceInteractionManager service now uses SoundTriggerService instead of
  SoundTriggerHelper.

Bug: 22860713
Change-Id: I7b5c0ed80702527c4460372efeb5e542d3693a69
parent 5c461fc3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -288,6 +288,7 @@ LOCAL_SRC_FILES += \
	core/java/com/android/internal/app/IBatteryStats.aidl \
	core/java/com/android/internal/app/IEphemeralResolver.aidl \
	core/java/com/android/internal/app/IProcessStats.aidl \
	core/java/com/android/internal/app/ISoundTriggerService.aidl \
	core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl \
	core/java/com/android/internal/app/IVoiceInteractionSessionShowCallback.aidl \
	core/java/com/android/internal/app/IVoiceInteractor.aidl \
+12 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.app;

import com.android.internal.app.IAppOpsService;
import com.android.internal.app.ISoundTriggerService;
import com.android.internal.appwidget.IAppWidgetService;
import com.android.internal.os.IDropBoxManagerService;

@@ -61,6 +62,7 @@ import android.media.midi.IMidiManager;
import android.media.midi.MidiManager;
import android.media.projection.MediaProjectionManager;
import android.media.session.MediaSessionManager;
import android.media.soundtrigger.SoundTriggerManager;
import android.media.tv.ITvInputManager;
import android.media.tv.TvInputManager;
import android.net.ConnectivityManager;
@@ -708,12 +710,22 @@ final class SystemServiceRegistry {
            public RadioManager createService(ContextImpl ctx) {
                return new RadioManager(ctx);
            }});

        registerService(Context.HARDWARE_PROPERTIES_SERVICE, HardwarePropertiesManager.class,
                new CachedServiceFetcher<HardwarePropertiesManager>() {
            @Override
            public HardwarePropertiesManager createService(ContextImpl ctx) {
                return new HardwarePropertiesManager();
            }});

        registerService(Context.SOUND_TRIGGER_SERVICE, SoundTriggerManager.class,
                new CachedServiceFetcher<SoundTriggerManager>() {
            @Override
            public SoundTriggerManager createService(ContextImpl ctx) {
                IBinder b = ServiceManager.getService(Context.SOUND_TRIGGER_SERVICE);
                Log.i(TAG, "Creating new instance of SoundTriggerManager object.");
                return new SoundTriggerManager(ctx, ISoundTriggerService.Stub.asInterface(b));
            }});
    }

    /**
+11 −0
Original line number Diff line number Diff line
@@ -2613,6 +2613,7 @@ public abstract class Context {
            MIDI_SERVICE,
            RADIO_SERVICE,
            HARDWARE_PROPERTIES_SERVICE,
            //@hide: SOUND_TRIGGER_SERVICE,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface ServiceName {}
@@ -3194,6 +3195,16 @@ public abstract class Context {
     */
    public static final String VOICE_INTERACTION_MANAGER_SERVICE = "voiceinteraction";

    /**
     * Use with {@link #getSystemService} to access the
     * {@link com.android.server.voiceinteraction.SoundTriggerService}.
     *
     * @hide
     * @see #getSystemService
     */
    public static final String SOUND_TRIGGER_SERVICE = "soundtrigger";


    /**
     * Use with {@link #getSystemService} to retrieve an
     * {@link android.app.backup.IBackupManager IBackupManager} for communicating
+6 −3
Original line number Diff line number Diff line
@@ -25,9 +25,12 @@ oneway interface IRecognitionStatusCallback {
    /**
     * Called when the keyphrase is spoken.
     *
     * @param data Optional trigger audio data, if it was requested and is available.
     * @param recognitionEvent Object containing data relating to the
     *                         recognition event such as trigger audio data, if it was requested
     *                         and is available.
     */
    void onDetected(in SoundTrigger.KeyphraseRecognitionEvent recognitionEvent);
    void onDetected(in SoundTrigger.RecognitionEvent recognitionEvent);

    /**
     * Called when the detection fails due to an error.
     *
+3 −0
Original line number Diff line number Diff line
@@ -18,8 +18,11 @@ package android.hardware.soundtrigger;

parcelable SoundTrigger.ConfidenceLevel;
parcelable SoundTrigger.Keyphrase;
parcelable SoundTrigger.RecognitionEvent;
parcelable SoundTrigger.KeyphraseRecognitionEvent;
parcelable SoundTrigger.GenericSoundRecognitionEvent;
parcelable SoundTrigger.KeyphraseRecognitionExtra;
parcelable SoundTrigger.KeyphraseSoundModel;
parcelable SoundTrigger.GenericSoundModel;
parcelable SoundTrigger.ModuleProperties;
parcelable SoundTrigger.RecognitionConfig;
Loading