1c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath/* 2c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * Copyright (C) 2011 The Android Open Source Project 3c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * 4c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * Licensed under the Apache License, Version 2.0 (the "License"); 5c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * you may not use this file except in compliance with the License. 6c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * You may obtain a copy of the License at 7c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * 8c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 9c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * 10c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * Unless required by applicable law or agreed to in writing, software 11c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 12c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * See the License for the specific language governing permissions and 14c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * limitations under the License. 15c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath */ 16c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 17c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathpackage com.android.speech.tts; 18c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 19c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport android.speech.tts.SynthesisCallback; 20c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport android.speech.tts.SynthesisRequest; 21c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport android.speech.tts.TextToSpeechService; 22c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 23c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport java.util.ArrayList; 24c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 25c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathpublic class MockableTextToSpeechService extends TextToSpeechService { 26c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 27c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath private static IDelegate sDelegate; 28c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 29c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath public static void setMocker(IDelegate delegate) { 30c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath sDelegate = delegate; 31c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 32c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 33c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath static IDelegate getMocker() { 34c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath return sDelegate; 35c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 36c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 37c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 38c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected int onIsLanguageAvailable(String lang, String country, String variant) { 39c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath return sDelegate.onIsLanguageAvailable(lang, country, variant); 40c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 41c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 42c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 43c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected String[] onGetLanguage() { 44c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath return sDelegate.onGetLanguage(); 45c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 46c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 47c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 48c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected int onLoadLanguage(String lang, String country, String variant) { 49c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath return sDelegate.onLoadLanguage(lang, country, variant); 50c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 51c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 52c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 53c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected void onStop() { 54c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath sDelegate.onStop(); 55c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 56c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 57c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 58c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback) { 59c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath sDelegate.onSynthesizeText(request, callback); 60c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 61c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 62c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath public static interface IDelegate { 63c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath int onIsLanguageAvailable(String lang, String country, String variant); 64c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 65c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath String[] onGetLanguage(); 66c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 67c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath int onLoadLanguage(String lang, String country, String variant); 68c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 69c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath void onStop(); 70c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 71c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback); 72c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 73c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath ArrayList<String> getAvailableVoices(); 74c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 75c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath ArrayList<String> getUnavailableVoices(); 76c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 77c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 78c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath} 79