1168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathanpackage com.android.car.messenger.tts;
2168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan
3168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathanimport android.content.Context;
4168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathanimport android.os.Bundle;
5168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathanimport android.speech.tts.TextToSpeech;
6168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathanimport android.speech.tts.UtteranceProgressListener;
7168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan
8168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan/**
9168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan * Interface for TTS Engine that closely matches {@link TextToSpeech}; facilitates mocking/faking.
10168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan */
11168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathanpublic interface TTSEngine {
12168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    /**
13168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * Initializes engine.
14168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     *
15168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * @param context Context to use.
16168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * @param initListener Listener to monitor initialization result.
17168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     */
18168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    void initialize(Context context, TextToSpeech.OnInitListener initListener);
19168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan
20168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    /**
21168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * @return Whether engine is already initialized.
22168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     */
23168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    boolean isInitialized();
24168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan
25168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    /**
26168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * @see TextToSpeech#setOnUtteranceProgressListener(UtteranceProgressListener)
27168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     */
28168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    void setOnUtteranceProgressListener(UtteranceProgressListener progressListener);
29168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan
30168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    /**
31168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * @see TextToSpeech#speak(CharSequence, int, Bundle, String)
32168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     */
33168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    int speak(CharSequence text, int queueMode, Bundle params, String utteranceId);
34168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan
35168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    /**
36168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * @see TextToSpeech#stop()
37168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     */
38168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    void stop();
39168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan
40168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    /**
414a5024d82db356bc7c6e0848c80f4f0d7e213a0eSrinivas Visvanathan     * @return Whether TTS is playing out currently.
424a5024d82db356bc7c6e0848c80f4f0d7e213a0eSrinivas Visvanathan     */
434a5024d82db356bc7c6e0848c80f4f0d7e213a0eSrinivas Visvanathan    boolean isSpeaking();
444a5024d82db356bc7c6e0848c80f4f0d7e213a0eSrinivas Visvanathan
454a5024d82db356bc7c6e0848c80f4f0d7e213a0eSrinivas Visvanathan    /**
46168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * Un-initialize engine and release resources.
47168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * {@link #initialize(Context, TextToSpeech.OnInitListener)} will need to be called again before
48168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     * using this engine.
49168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan     */
50168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan    void shutdown();
51168fc36b549a3bdda30fa40b0da0379a23b062c9Srinivas Visvanathan}
52