2014-03-13 7 views
6

ich das TTS Plugin bin mit von https://github.com/domaemon/org.apache.cordova.plugin.tts Aber das Plugin scheint nicht zu funktionieren. Es wird nicht einmal initialisiert.Phonegap TTS Plugin Android funktioniert nicht

das Plugin wie unter (PhoneGap 3,3)

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

Hinzugefügt wurde die in der phonegap config.xml

<gap:plugin name="org.apache.cordova.plugins.tts" value="org.apache.cordova.plugins.tts"/> 

Added in mein Javascript

der folgende Code folgenden Installierte
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"); 
}   

Aber keine Konsolenprotokollmeldungen werden angezeigt. Ich teste das auf dem Genymotion-Emulator.

Antwort

10

Nach einigem Kampf Ich habe das TTS arbeiten. Aber es gibt noch ein Problem, das ich manuell beheben musste. Im Folgenden sind die Schritte der TTS Arbeits

Installieren Sie das Plugin wie unten zu bekommen.

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

Einmal installiert und gebaut. Dieses Plug-in der phonegap config.xml-Datei. (Wenn Sie die App bauen mit Sencha Touch, wird der config.xml im Stammordner sein.)

<gap:plugin name="org.apache.cordova.plugins.tts" value="org.apache.cordova.plugins.tts"/> 

Dies wird das Plugin zum letzten Build hinzuzufügen. Jetzt den TTS-Dienst zu starten und einen Text sprechen, verwenden Sie den folgenden Code-Schnipsel.

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); 
} 

Das Problem i die TTS.STARTED im startupWin nicht im Plugin definiert hatte wurde. Ich habe nur den Wert der Konstanten verwendet und das Plugin funktioniert perfekt.

+0

Das ist fantastisch! Vielen Dank, dass Sie Ihre Lösung veröffentlicht haben! –

0

Ergebnis == 2 oder STARTED funktioniert nur einmal. Wenn Sie die Funktion erneut aufrufen, kann sie nicht 2 oder STARTED (passiert bei mir) zurückgeben. so besser nicht, dass Bedingung für den Erfolg der Inbetriebnahme verwenden.

/*********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>