Как получить ответ в 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;
}