使用Phonegap在Android上启动语音识别器

时间:2013-04-16 10:51:14

标签: javascript android cordova speech-recognition

目前我正在制作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): enter image description here

提前致谢

2 个答案:

答案 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的好建议。