Как получить ответ в SpeechRecognizer в функции 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 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.

Пожалуйста, кто-нибудь, помогите мне достичь этого.

1 ответ

Нет простого способа передать переменную в функцию JavaScript... но вы можете создать класс JavaScriptInterface и дать сигнал JavaScript, чтобы получить строку, когда она будет готова.

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

перечислите функции, которые вы хотите вызвать, в классе JavaScriptInterface. Тогда в вашем JavaScript...

Interface.getStringResult();

Вы также можете создать функцию, чтобы проверить, существует ли интерфейс в JavaScript:

function runningInAndroidApp() {
    if (typeof Interface != 'undefined') {
        return true;
    }
    return false;
}
Другие вопросы по тегам