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

Commit 203346d3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "fix issue with ST listModules check"

parents 3af4bb54 5b96c015
Loading
Loading
Loading
Loading
+26 −8
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.function.BiFunction;

/**
 * Helper for {@link SoundTrigger} APIs. Supports two types of models:
@@ -118,8 +117,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener {

    private PowerSaveModeListener mPowerSaveModeListener;

    private final BiFunction<Integer, SoundTrigger.StatusListener, SoundTriggerModule>
            mModuleProvider;
    private final SoundTriggerModuleProvider mModuleProvider;

    // Handler to process call state changes will delay to allow time for the audio
    // and sound trigger HALs to process the end of call notifications
@@ -128,12 +126,32 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener {
    private static final int MSG_CALL_STATE_CHANGED = 0;
    private static final int CALL_INACTIVE_MSG_DELAY_MS = 1000;

    SoundTriggerHelper(Context context,
            @NonNull BiFunction<Integer, SoundTrigger.StatusListener,
                    SoundTriggerModule> moduleProvider) {
    /**
     * Provider interface for retrieving SoundTriggerModule instances
     */
    public interface SoundTriggerModuleProvider {
        /**
         * Populate module properties for all available modules
         *
         * @param modules List of ModuleProperties to be populated
         * @return Status int 0 on success.
         */
        int listModuleProperties(@NonNull ArrayList<SoundTrigger.ModuleProperties> modules);

        /**
         * Get SoundTriggerModule based on {@link SoundTrigger.ModuleProperties#getId()}
         *
         * @param moduleId Module ID
         * @param statusListener Client listener to be associated with the returned module
         * @return Module associated with moduleId
         */
        SoundTriggerModule getModule(int moduleId, SoundTrigger.StatusListener statusListener);
    }

    SoundTriggerHelper(Context context, SoundTriggerModuleProvider moduleProvider) {
        ArrayList <ModuleProperties> modules = new ArrayList<>();
        mModuleProvider = moduleProvider;
        int status = SoundTrigger.listModules(modules);
        int status = mModuleProvider.listModuleProperties(modules);
        mContext = context;
        mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
@@ -272,7 +290,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener {

    private int prepareForRecognition(ModelData modelData) {
        if (mModule == null) {
            mModule = mModuleProvider.apply(mModuleProperties.getId(), this);
            mModule = mModuleProvider.getModule(mModuleProperties.getId(), this);
            if (mModule == null) {
                Slog.w(TAG, "prepareForRecognition: cannot attach to sound trigger module");
                return STATUS_ERROR;
+15 −3
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import android.hardware.soundtrigger.SoundTrigger.ModelParamRange;
import android.hardware.soundtrigger.SoundTrigger.ModuleProperties;
import android.hardware.soundtrigger.SoundTrigger.RecognitionConfig;
import android.hardware.soundtrigger.SoundTrigger.SoundModel;
import android.hardware.soundtrigger.SoundTriggerModule;
import android.media.AudioAttributes;
import android.media.AudioFormat;
import android.media.AudioRecord;
@@ -219,9 +220,20 @@ public class SoundTriggerService extends SystemService {
        Identity originatorIdentity = IdentityContext.getNonNull();

        return new SoundTriggerHelper(mContext,
                (moduleId, listener) -> SoundTrigger.attachModuleAsMiddleman(moduleId, listener,
                        null,
                        middlemanIdentity, originatorIdentity));
                new SoundTriggerHelper.SoundTriggerModuleProvider() {
                    @Override
                    public int listModuleProperties(ArrayList<ModuleProperties> modules) {
                        return SoundTrigger.listModulesAsMiddleman(modules, middlemanIdentity,
                                originatorIdentity);
                    }

                    @Override
                    public SoundTriggerModule getModule(int moduleId,
                            SoundTrigger.StatusListener statusListener) {
                        return SoundTrigger.attachModuleAsMiddleman(moduleId, statusListener, null,
                                middlemanIdentity, originatorIdentity);
                    }
                });
    }

    class SoundTriggerServiceStub extends ISoundTriggerService.Stub {