Javascript 使用Phonegap在Android上启动语音识别器
目前我正在制作一个Phonegap应用程序。 我想把增强现实和语音输入结合起来。 Phonegap有一个名为SpeechRecognitor的插件,但我无法让它工作 我的标题:Javascript 使用Phonegap在Android上启动语音识别器,javascript,android,cordova,speech-recognition,Javascript,Android,Cordova,Speech Recognition,目前我正在制作一个Phonegap应用程序。 我想把增强现实和语音输入结合起来。 Phonegap有一个名为SpeechRecognitor的插件,但我无法让它工作 我的标题: <script type="text/javascript" src="cordova-2.6.0.js"></script> <script type="text/javascript" src="SpeechRecognizer.js"></script>
<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>
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
函数speechOk(){
警觉(“言语作品”);
}
函数speechFail(){
警惕(“讲话不起作用”);
}
函数ondevicerady(){
window.plugins.speechrecognizer.init(speechOk,speechFail);
}
$(“#micButton”).bind(“touchstart”,function(){
var requestCode=4815162342;
var-maxMatches=1;
var promptString=“您想要什么?”;
window.plugins.speechrecognizer.startRecognite(speechOk、speechFail、requestCode、maxMatches、PrompString);
});
项目的图片(config.xml):
提前感谢出现了一些问题。
首先,SDK版本不对。如果你使用新的cordova,你还必须使用最新版本的插件。此版本需要SDK 15或更高版本。(android清单->
)。
之后,出于某种原因,插件init不会返回任何内容。
我刚刚触发了:window.plugins.speechrecognizer.startrerecognize();函数,然后执行
javascript(此代码需要jQuery):
“#micButton”是启动android语音识别必须按下的按钮
“#searchField”是一个输入字段,用于获取语音识别的结果
谢谢比劳先生的忠告 不是你的错,
SpeechRecognizer.java
内部有一个bug
我也遇到了同样的问题,我只需将语音识别器
插件替换为旧版本(如2.0.0
),就可以从下载
它在
phonegap2.5.0
中对我起作用,我猜它在2.6.0
中起作用,我通过在github repo上遵循readme.md使它工作得很好。你确定每件事都拼写正确吗?起初,我遇到了麻烦,因为我把它错打成了speechRecgonizer。另外…您的设备上有语音识别器应用程序吗?它在Nexus7上对我有效,但在没有语音识别器应用程序的旧设备上,它失败了。如果在ondevicerady()中执行console.log(window.plugins.speechrecognizer)
,会发生什么情况?最后,你的日志怎么说?真奇怪。我不能让它工作。我的控制台日志:“Uncaught TypeError:无法读取未定义”的属性“speechrecognizer”:你的设备上有语音识别器应用程序吗?我有一个Sony Xperia Z(android 4.1.2),所以这不是问题,对吗?我已经在android清单中将min sdk版本更改为15,现在我不再收到任何控制台错误,但现在它根本不记录任何内容。我已更新插件以删除无用的init方法。该插件在以下位置可用:。如果遇到任何错误,请创建问题通知单。
$("#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");
}