我正在创建一个插件,以使用虚幻插件语言将UE4应用程序连接到android语言。 我创建了两个函数:
public void AndroidThunkJava_AndroidAPI_ShowToast(final String toast) {
runOnUiThread(new Runnable() {
public void run() {
CharSequence cs = toast;
Toast.makeText(getApplicationContext(), cs, Toast.LENGTH_LONG).show();
}
});
}
public void AndroidThunkJava_AndroidAPI_CheckRecording() {
if(!isListening){
startRecording();
if(mRecorder.getMaxAmplitude() > 1000){
stopRecording();
runOnUiThread(new Runnable() {
public void run() {
startSpeechRecognition();
speechRecognizer.startListening(speechRecognizerIntent);
}
});
}
}
}
绑定有效,我可以从C ++调用这两个函数。
问题是,当我调用第二个函数时,代码出现在这一部分:speechRecognizer.startListening(speechRecognizerIntent);
,该应用程序刚刚停止,并且在以下线程上,AndroidStudio:SIGABRT (signal SIGABRT)
上出现了以下错误:
Thread-16[Thread-542]
tgkill
pthread_kill
raise
__libc_android_abort
abort
art::Runtime::Abort()
art::LogMessage::~LogMessage()
art::JavaVMExt::JniAbort(char const*, char const*)
art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)
art::ScopedCheck::AbortF(char const*, ...)
art::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::JniValueType*) (.constprop.95)
art::CheckJNI::NewStringUTF(_JNIEnv*, char const*)
FJavaHelper::ToJavaString(_JNIEnv*, FString const&)
AndroidThunkCpp_GetMetaDataInt(FString const&)
FAndroidPlatformMemory::GetStats()
UpdateCoreCsvStats_EndFrame()
TBaseStaticDelegateInstance<void ()>::ExecuteIfSafe() const
TBaseMulticastDelegate<void>::Broadcast() const
FEngineLoop::Tick()
AndroidMain(android_app*)
android_main
android_app_entry
__pthread_start(void*)
__start_thread
当我从OnCreate调用时,startSpeechRecognition
和speechRecognizer.startListening(speechRecognizerIntent);
可以这样工作:
<gameActivityOnCreateAdditions>
<insert>
<![CDATA[
startSpeechRecognition();
speechRecognizer.startListening(speechRecognizerIntent);
]]>
</insert>
</gameActivityOnCreateAdditions>