1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package android.speech;
17 
18 import android.content.Intent;
19 import android.os.Bundle;
20 
21 /**
22  * Used for receiving notifications from the SpeechRecognizer when the
23  * recognition related events occur. All the callbacks are executed on the
24  * Application main thread.
25  */
26 public interface RecognitionListener {
27     /**
28      * Called when the endpointer is ready for the user to start speaking.
29      *
30      * @param params parameters set by the recognition service. Reserved for future use.
31      */
onReadyForSpeech(Bundle params)32     void onReadyForSpeech(Bundle params);
33 
34     /**
35      * The user has started to speak.
36      */
onBeginningOfSpeech()37     void onBeginningOfSpeech();
38 
39     /**
40      * The sound level in the audio stream has changed. There is no guarantee that this method will
41      * be called.
42      *
43      * @param rmsdB the new RMS dB value
44      */
onRmsChanged(float rmsdB)45     void onRmsChanged(float rmsdB);
46 
47     /**
48      * More sound has been received. The purpose of this function is to allow giving feedback to the
49      * user regarding the captured audio. There is no guarantee that this method will be called.
50      *
51      * @param buffer a buffer containing a sequence of big-endian 16-bit integers representing a
52      *        single channel audio stream. The sample rate is implementation dependent.
53      */
onBufferReceived(byte[] buffer)54     void onBufferReceived(byte[] buffer);
55 
56     /**
57      * Called after the user stops speaking.
58      */
onEndOfSpeech()59     void onEndOfSpeech();
60 
61     /**
62      * A network or recognition error occurred.
63      *
64      * @param error code is defined in {@link SpeechRecognizer}
65      */
onError(int error)66     void onError(int error);
67 
68     /**
69      * Called when recognition results are ready.
70      *
71      * @param results the recognition results. To retrieve the results in {@code
72      *        ArrayList<String>} format use {@link Bundle#getStringArrayList(String)} with
73      *        {@link SpeechRecognizer#RESULTS_RECOGNITION} as a parameter. A float array of
74      *        confidence values might also be given in {@link SpeechRecognizer#CONFIDENCE_SCORES}.
75      */
onResults(Bundle results)76     void onResults(Bundle results);
77 
78     /**
79      * Called when partial recognition results are available. The callback might be called at any
80      * time between {@link #onBeginningOfSpeech()} and {@link #onResults(Bundle)} when partial
81      * results are ready. This method may be called zero, one or multiple times for each call to
82      * {@link SpeechRecognizer#startListening(Intent)}, depending on the speech recognition
83      * service implementation.  To request partial results, use
84      * {@link RecognizerIntent#EXTRA_PARTIAL_RESULTS}
85      *
86      * @param partialResults the returned results. To retrieve the results in
87      *        ArrayList&lt;String&gt; format use {@link Bundle#getStringArrayList(String)} with
88      *        {@link SpeechRecognizer#RESULTS_RECOGNITION} as a parameter
89      */
onPartialResults(Bundle partialResults)90     void onPartialResults(Bundle partialResults);
91 
92     /**
93      * Reserved for adding future events.
94      *
95      * @param eventType the type of the occurred event
96      * @param params a Bundle containing the passed parameters
97      */
onEvent(int eventType, Bundle params)98     void onEvent(int eventType, Bundle params);
99 }
100