Merge "fix issue with ST listModules check"
This commit is contained in:
committed by
Android (Google) Code Review
commit
203346d3f5
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user