2014-03-13 58 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>