2014-03-13 59 views
6

我使用的是来自https://github.com/domaemon/org.apache.cordova.plugin.tts的TTS插件,但该插件似乎不工作。它甚至不初始化。Phonegap TTS插件Android不工作

安装像下面的插件(PhoneGap的3.3)

phonegap plugin add https://github.com/domaemon/org.apache.cordova.plugin.tts.git 
phonegap build android 

添加在PhoneGap的config.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模拟器上测试这个。

回答

10

经过一番激烈的斗争,我有了TTS的工作。但仍然有一个问题需要我手动修复。以下是获取TTS工作的步骤。

像下面这样安装插件。

phonegap plugin add https://github.com/domaemon/org.apache.cordova.plugin.tts.git 
phonegap build android 

安装并构建完成后。将此插件添加到phonegap config.xml文件中。 (如果您正在构建使用煎茶触摸应用程序,config.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.STARTED在startupWin没有在插件中定义。我只是使用了常量的值,插件完美地工作。

+0

这是太棒了!感谢您发布您的解决方案! –

0

结果== 2或STARTED只能使用一次。如果再次调用该函数,它可能不会返回2或STARTED(与我一起发生)。所以最好不要在启动成功时使用该条件。

/*********tts.js*************/ 
 
var tts = { 
 
    say: function() { 
 
\t alert("tts"); 
 
    }, 
 
    startup: function(successCallback, errorCallback) { 
 
\t 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) { 
 
    \t 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){ 
 
\t \t \t window.plugins.tts.speed(50,function(){ 
 
\t \t \t \t console.log('speed success'); 
 
\t \t \t },function(err){ 
 
\t \t \t \t console.log('speed err'+JSON.stringify(err)); 
 
\t \t \t }); 
 
\t  \t window.plugins.tts.speak(finalstr,function(){ 
 
\t  \t \t console.log('speech success'); 
 
\t  \t },function(err){ 
 
\t  \t \t console.log('speech err'+JSON.stringify(err)); 
 
\t  \t }); 
 
\t \t  
 
\t }, fail); 
 
    }
<button id="speakvisit" onclick="visitToString();">Audio Details 
 
\t \t \t \t \t </button>