package org.openhab.habclient; import android.content.Context; import android.speech.tts.TextToSpeech; import android.util.Log; import org.openhab.domain.ITextToSpeechProvider; import java.util.Locale; /** * Created by Tony Alpskog in 2014. */ public class TextToSpeechProvider implements ITextToSpeechProvider { private TextToSpeech mTextToSpeech; public TextToSpeechProvider(Context context, final Locale locale) { mTextToSpeech = new TextToSpeech(context, new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { setLanguage(locale); } else { Log.e(HABApplication.getLogTag(), "Text-To-Speech initialization failed"); } } }); // speakText("Available TTS engines, before"); speakText("Tillgängliga TTS maskiner"); String availableEnginesLogText = "Available TTS engines: "; for(TextToSpeech.EngineInfo ei : mTextToSpeech.getEngines()) { availableEnginesLogText += "/n-> " + ei.toString(); } Log.i(HABApplication.getLogTag(), availableEnginesLogText); // setExternalTTSEngine("com.svox.classic");//com.svox.pico // // speakText("Tillgängliga TTS maskiner"); // // availableEnginesLogText = "Available TTS engines AFTER: "; // for(TextToSpeech.EngineInfo ei : mTextToSpeech.getEngines()) { // availableEnginesLogText += "/n-> " + ei.toString(); // } // Log.i(HABApplication.getLogTag(), availableEnginesLogText); } @Override public boolean setExternalTTSEngine(String ttsPackageName) { int result = mTextToSpeech.setEngineByPackageName(ttsPackageName); if( result == TextToSpeech.ERROR ) { Log.e(HABApplication.getLogTag(), String.format("Could not find Text-To-Speech package '%s'", ttsPackageName)); return false; } else return true; } @Override public boolean setLanguage(Locale locale) { int result = mTextToSpeech.setLanguage(locale); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Log.w(HABApplication.getLogTag(), "This Language is not supported"); return false; } return true; } @Override public void speakText(String textToSpeak) { mTextToSpeech.speak(textToSpeak, TextToSpeech.QUEUE_FLUSH, null); } }