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