2014-03-13 2 views
6

TTS 플러그인을 사용하고 있습니다. https://github.com/domaemon/org.apache.cordova.plugin.tts 플러그인이 작동하지 않는 것 같습니다. 그것은 심지어 초기화하지 않습니다.Phonegap TTS 플러그인 Android가 작동하지 않습니다.

는하여 폰갭의 config.xml에

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

추가 내 자바 스크립트에서 다음 코드에 다음 아래와 같이 플러그인 (폰갭 3.3)

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

추가 설치된

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>

관련 문제