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; 224b73867a12a9339c7788e8949aac4a32d2eee22bPrzemyslaw Szczepaniakimport android.util.Log; 23c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 24c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport java.util.ArrayList; 254b73867a12a9339c7788e8949aac4a32d2eee22bPrzemyslaw Szczepaniakimport java.util.logging.Logger; 26c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 27c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathpublic class MockableTextToSpeechService extends TextToSpeechService { 28c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 29c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath private static IDelegate sDelegate; 30c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 31c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath public static void setMocker(IDelegate delegate) { 32c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath sDelegate = delegate; 33c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 34c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 35c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath static IDelegate getMocker() { 36c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath return sDelegate; 37c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 38c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 39c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 40c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected int onIsLanguageAvailable(String lang, String country, String variant) { 41c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath return sDelegate.onIsLanguageAvailable(lang, country, variant); 42c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 43c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 44c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 45c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected String[] onGetLanguage() { 46c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath return sDelegate.onGetLanguage(); 47c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 48c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 49c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 50c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected int onLoadLanguage(String lang, String country, String variant) { 51c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath return sDelegate.onLoadLanguage(lang, country, variant); 52c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 53c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 54c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 55c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected void onStop() { 56c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath sDelegate.onStop(); 57c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 58c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 59c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath @Override 60c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath protected void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback) { 61c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath sDelegate.onSynthesizeText(request, callback); 62c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 63c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 64c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath public static interface IDelegate { 65c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath int onIsLanguageAvailable(String lang, String country, String variant); 66c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 67c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath String[] onGetLanguage(); 68c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 69c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath int onLoadLanguage(String lang, String country, String variant); 70c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 71c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath void onStop(); 72c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 73c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback); 74c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 75c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath ArrayList<String> getAvailableVoices(); 76c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 77c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath ArrayList<String> getUnavailableVoices(); 78c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath } 79c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath 80c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath} 81