0

我正在处理 SpeechRecognizer Listner 活动。

我从 Webview 按钮触发意图 (startListning(intent)) 单击抛出 javascript

act.startFun();

startFun() 方法在我的 MainActivity.java 文件中声明

public void startFun(){
        Log.d(TAG,"ONCLICK");
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);         
 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
         intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
         intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5); 
         sr.startListening(intent);
   }

我的 SpeechRecognizer Listner 就像

class listner implements RecognitionListener{  
            public void onResults(Bundle results) {
            end=1;
            Log.d(TAG, "onResults");
        }

        public void onRmsChanged(float rmsdB) {
            Log.d(TAG, "onRmsChanged");
        }
    }

我的要求是我想将 onResults(Bundle results) 的结果字符串传递给我的 javascript 方法。

请有人帮助我实现这一目标。

4

1 回答 1

0

没有简单的方法将变量传递给 JavaScript 函数......但是您可以创建一个 JavaScriptInterface 类并在准备好字符串时向 JavaScript 发出信号以获取字符串。

webview.addJavascriptInterface(new JavaScriptInterface(),"Interface");

列出要在 JavaScriptInterface 类中调用的函数。然后在你的javascript中......

Interface.getStringResult();

您还可以创建一个函数来检查该接口是否存在于 JavaScript 中:

function runningInAndroidApp() {
    if (typeof Interface != 'undefined') {
        return true;
    }
    return false;
}
于 2012-06-19T17:41:17.600 回答