Phonegap TTS плагин для Android не работает
Я использую плагин TTS из https://github.com/domaemon/org.apache.cordova.plugin.tts но плагин, похоже, не работает. Он даже не инициализируется.
Установил плагин, как показано ниже (PHONEGAP 3.3)
phonegap plugin add https://github.com/domaemon/org.apache.cordova.plugin.tts.git
phonegap build android
Добавил следующее В конфигурацию phonegap.xml
<gap:plugin name="org.apache.cordova.plugins.tts" value="org.apache.cordova.plugins.tts"/>
Добавил следующий код в мой javascript
window.plugins.tts.startup(startupWin, fail);
function startupWin(result) {
console.log("Startup win");
// When result is equal to STARTED we are ready to play
if (result == TTS.STARTED) {
window.plugins.tts.getLanguage(win, fail);
window.plugins.tts.speak("The text to speech service is ready");
window.plugins.tts.isLanguageAvailable("en_US", function() {
addLang("en_US", "English (American)");
}, fail);
window.plugins.tts.isLanguageAvailable("en_GB", function() {
addLang("en_GB", "English (UK)");
}, fail);
window.plugins.tts.isLanguageAvailable("fr", function() {
addLang("fr", "French");
}, fail);
window.plugins.tts.isLanguageAvailable("de", function() {
addLang("de", "German");
}, fail);
window.plugins.tts.isLanguageAvailable("it", function() {
addLang("it", "Italian");
}, fail);
window.plugins.tts.isLanguageAvailable("es", function() {
addLang("es", "Spanish");
}, fail);
}
}
function addLang(loc, lang) {
var langs = document.getElementById('langs');
var langOption = document.createElement("OPTION")
langOption.innerText = lang;
langOption.value = loc;
langs.options.add(langOption);
}
function changeLang() {
var yourSelect = document.getElementById('langs');
window.plugins.tts.setLanguage(yourSelect.options[yourSelect.selectedIndex].value, win, fail);
}
function win(result) {
console.log(result);
}
function fail(result) {
console.log("Error = " + result);
}
function speak() {
console.log("Speaking");
window.plugins.tts.speak("How are you");
}
Но ни одно из сообщений журнала консоли не отображается. Я тестирую это на эмуляторе genymotion.
2 ответов:
После некоторой борьбы у меня работает TTS. Но есть еще одна проблема, которую я должен был вручную исправить. Ниже приведены шаги, чтобы заставить TTS работать
Установите плагин, как показано ниже.
phonegap plugin add https://github.com/domaemon/org.apache.cordova.plugin.tts.git phonegap build androidПосле установки и сборки. Добавьте этот плагин в конфигурацию phonegap.XML-файл. ( Если вы создаете приложение с помощью sencha touch, конфигурация.xml будет находиться в корневой папке. )
<gap:plugin name="org.apache.cordova.plugins.tts" value="org.apache.cordova.plugins.tts"/>Это добавит плагин к финальной сборке. Теперь, чтобы запустить службу TTS и произнести текст, Используйте следующий фрагмент.
navigator.tts.startup(startupWin, fail); function startupWin(result) { console.log("Startup win"); // When result is equal to STARTED we are ready to play console.log("Result "+result); //TTS.STARTED==2 use this once so is answered if (result == 2) { navigator.tts.getLanguage(win, fail); navigator.tts.speak("The text to speech service is ready"); } } function win(result) { console.log(result); } function fail(result) { console.log("Error = " + result); }Проблема, которая у меня была, была TTS.Запуск в startupWin не определен в плагине. Я просто использовал значение константы, и плагин работает отлично.
Результат == 2 или начатые работы только один раз. Если вы снова вызовете функцию, она может не вернуть 2 или начать (произошло со мной). так что лучше не используйте это условие в успехе стартапа.
/*********tts.js*************/ var tts = { say: function() { alert("tts"); }, startup: function(successCallback, errorCallback) { console.log("TTS-Startup"); cordova.exec(successCallback, errorCallback, "TTS", "startup", []); }, speed: function(speed, successCallback, errorCallback) { cordova.exec(successCallback, errorCallback, "TTS", "speed", [speed]); }, speak: function(text, successCallback, errorCallback) { cordova.exec(successCallback, errorCallback, "TTS", "speak", [text]); } }; if(!window.plugins) { window.plugins = {}; } if (!window.plugins.tts) { window.plugins.tts = tts; } /**********calling from your js after device ready***************/ function visitToString(){ window.plugins.tts.startup(function(result){ window.plugins.tts.speed(50,function(){ console.log('speed success'); },function(err){ console.log('speed err'+JSON.stringify(err)); }); window.plugins.tts.speak(finalstr,function(){ console.log('speech success'); },function(err){ console.log('speech err'+JSON.stringify(err)); }); }, fail); }<button id="speakvisit" onclick="visitToString();">Audio Details </button>
Comments