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.

576   2  

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

    Ничего не найдено.