目前我正在制作Phonegap应用程序。 我想结合增强现实和语音输入。 Phonegap有一个名为SpeechRecognizer的插件,但我无法让它工作。
我的标题:
<script type="text/javascript" src="cordova-2.6.0.js"></script>
<script type="text/javascript" src="SpeechRecognizer.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function speechOk() {
alert('speech works');
}
function speechFail() {
alert("speech doesn't work");
}
function onDeviceReady() {
window.plugins.speechrecognizer.init(speechOk, speechFail);
}
$("#micButton").bind("touchstart", function() {
var requestCode = 4815162342;
var maxMatches = 1;
var promptString = "What do you want?";
window.plugins.speechrecognizer.startRecognize(speechOk, speechFail, requestCode, maxMatches, promptString);
});
</script>
项目图片(config.xml):
提前致谢
答案 0 :(得分:2)
不是你的错,SpeechRecognizer.java
里面有一个错误。
我遇到了同样的问题,只需将Speech Recognizer
插件替换为旧版本(例如2.0.0
)即可解决问题,您可以从github下载。
Phonegap 2.5.0
对我有用,猜测它适用于2.6.0
。
答案 1 :(得分:1)
有一些问题。
首先,SDK版本不对。如果您使用新的cordova,您还必须使用最新版本的插件。此版本需要SDK 15或更高版本。 (android manifest - &gt; <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17" />
)。
之后,由于某种原因,插件init不返回任何内容。
我刚刚触发了:window.plugins.speechrecognizer.startRecognize();单击按钮时功能,然后执行。
javascript(此代码需要jQuery):
$("#micButton").bind("touchstart", function() {
var requestCode = 4815162342;
var maxMatches = 1;
var promptString = "What do you want?";
window.plugins.speechrecognizer.startRecognize(speechOk, speechFail, requestCode, maxMatches, promptString);
});
function speechOk(result) {
var match, respObj;
if (result) {
respObj = JSON.parse(result);
if (respObj) {
var response = respObj.speechMatches.speechMatch[0];
$("#searchField").val(response);
$("#searchButton").trigger("touchstart");
}
}
}
function speechFail(m) {
navigator.notification.alert("Sorry, I couldn't recognize you.", function() {}, "Speech Fail");
}
'#micButton'是您必须按下以启动Android语音识别的按钮
'#searchField'是一个输入字段,它从语音识别中获得结果
感谢MrBillau的好建议。