1a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra/** 2a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * Copyright (C) 2014 The Android Open Source Project 3a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * 4a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * Licensed under the Apache License, Version 2.0 (the "License"); 5a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * you may not use this file except in compliance with the License. 6a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * You may obtain a copy of the License at 7a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * 8a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * http://www.apache.org/licenses/LICENSE-2.0 9a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * 10a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * Unless required by applicable law or agreed to in writing, software 11a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * distributed under the License is distributed on an "AS IS" BASIS, 12a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * See the License for the specific language governing permissions and 14a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * limitations under the License. 15a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra */ 16a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra 17a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishrapackage com.android.server.soundtrigger; 18a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra 19a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.IRecognitionStatusCallback; 20a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger; 21a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger.Keyphrase; 22a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionEvent; 23a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra; 24a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel; 25a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger.ModuleProperties; 26a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger.RecognitionConfig; 27a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger.RecognitionEvent; 28a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTrigger.SoundModelEvent; 29a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport android.hardware.soundtrigger.SoundTriggerModule; 30a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra 31a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport java.io.FileDescriptor; 32a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishraimport java.io.PrintWriter; 33a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra 34a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra/** 35a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * Provides a local service for managing voice-related recoginition models. This is primarily used 36a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * by the {@link VoiceInteractionManagerService}. 37a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra */ 38a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishrapublic abstract class SoundTriggerInternal { 39a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra /** 40a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * Return codes for {@link #startRecognition(int, KeyphraseSoundModel, 41a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * IRecognitionStatusCallback, RecognitionConfig)}, 42a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * {@link #stopRecognition(int, IRecognitionStatusCallback)} 43a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra */ 44a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra public static final int STATUS_ERROR = SoundTrigger.STATUS_ERROR; 45a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra public static final int STATUS_OK = SoundTrigger.STATUS_OK; 46a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra 47a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra /** 48a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * Starts recognition for the given keyphraseId. 49a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * 50a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * @param keyphraseId The identifier of the keyphrase for which 51a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * the recognition is to be started. 52a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * @param soundModel The sound model to use for recognition. 53a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * @param listener The listener for the recognition events related to the given keyphrase. 54a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * @return One of {@link #STATUS_ERROR} or {@link #STATUS_OK}. 55a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra */ 56a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra public abstract int startRecognition(int keyphraseId, KeyphraseSoundModel soundModel, 57a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra IRecognitionStatusCallback listener, RecognitionConfig recognitionConfig); 58a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra 59a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra /** 60a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * Stops recognition for the given {@link Keyphrase} if a recognition is 61a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * currently active. 62a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * 63a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * @param keyphraseId The identifier of the keyphrase for which 64a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * the recognition is to be stopped. 65a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * @param listener The listener for the recognition events related to the given keyphrase. 66a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * 67a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra * @return One of {@link #STATUS_ERROR} or {@link #STATUS_OK}. 68a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra */ 69a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra public abstract int stopRecognition(int keyphraseId, IRecognitionStatusCallback listener); 70a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra 7155a9b0089c12dd657a8dc8551c79cf3e0f25d7e4Arunesh Mishra public abstract ModuleProperties getModuleProperties(); 72a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra 73f967da90528426ff48f75c9109aede2b89a14880Chris Thornton /** 74f967da90528426ff48f75c9109aede2b89a14880Chris Thornton * Unloads (and stops if running) the given keyphraseId 75f967da90528426ff48f75c9109aede2b89a14880Chris Thornton */ 762d1de78a4c8fc224329a9622c9326e42a42ddaddArunesh Mishra public abstract int unloadKeyphraseModel(int keyphaseId); 772d1de78a4c8fc224329a9622c9326e42a42ddaddArunesh Mishra 78a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra public abstract void dump(FileDescriptor fd, PrintWriter pw, String[] args); 79a772e5fc062c8de48cb9c1d61755110f6b2e189bArunesh Mishra} 80