2012-06-19 36 views
0

我正在開發SpeechRecognizer Listner活動。如何在js函數中獲取SpeechRecognizer listner響應?

我從網頁視圖按鈕點擊觸發的意圖(startListning(意向))拋出的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聽者猶如

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結果)的結果字符串給我的JavaScript方法。

請有人幫助我做到這一點。

回答

0

有沒有簡單的方法可以將變量傳遞給JavaScript函數......但您可以創建一個JavaScriptInterface類併發信號通知JavaScript,以便在準備好後獲取字符串。

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

列出您要在JavaScriptInterface類中調用的函數。 然後,在JavaScript ...

Interface.getStringResult(); 

你也可以創建一個函數來檢查,看看是否在JavaScript中存在的接口:

function runningInAndroidApp() { 
    if (typeof Interface != 'undefined') { 
     return true; 
    } 
    return false; 
} 
+0

喬爾感謝您的回覆。我已經意識到這一點。看到我的帖子我已經發布了代碼act.startFun() - 哪個「行事」只是javascript接口。 – littledev

+0

我的要求是說var response = Interface.init()。 init會調用speechRecognization,並且我需要從init()方法本身的語音列表中的onResult()方法的響應 – littledev

+0

您的需求現在對我來說似乎有點模糊不清。但將數據發送到您的javascript的唯一方法是返回這些接口之一中的原始數據類型(或字符串)。你可以做一個loadUrl()來調用一個javascript函數,但是你不能傳遞任何參數。 – Joel

相關問題