Lon*_*Cpp 5 android react-native react-native-android
我正在尝试使用 react native 对文本进行一些语音识别。我写了一个反应模块来启动识别器意图
public class SpeechToTextModule extends ReactContextBaseJavaModule {
...
@ReactMethod
public void startListening(Callback errorCallback, Callback successCallback) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
if(getCurrentActivity() != null){
getReactApplicationContext().startActivityForResult(intent, SPEECH_REQUEST_CODE, null);
} else {
errorCallback.invoke(new NullPointerException("Activity is null"));
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data){
// control must come here
}
Run Code Online (Sandbox Code Playgroud)
主要活动如下所示:
public class MainActivity extends ReactActivity {
...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// how do i invoke the module function?
}
}
Run Code Online (Sandbox Code Playgroud)
MainActivity 从语音意图接收结果,但我不知道如何将其传递给模块。
有一种方法可以注册为 Activity 事件侦听器。
将此添加到您的本机模块:
public class SpeechToTextModule
extends ReactContextBaseJavaModule
implements ActivityEventListener {
public SpeechToTextModule(ReactApplicationContext reactContext) {
super(reactContext);
reactContext.addActivityEventListener(this); //Register this native module as Activity result listener
}
@Override
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
// Here is your Activity result :)
}
@Override
public void onNewIntent(Intent intent) {
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3801 次 |
最近记录: |