Merge "fix issue with ST listModules check"

This commit is contained in:
TreeHugger Robot
2020-11-19 01:34:16 +00:00
committed by Android (Google) Code Review
2 changed files with 41 additions and 11 deletions

View File

@@ -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;

View File

@@ -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 {