Store the TTS object in the struct.

This commit is contained in:
Nolan Darilek 2020-12-29 15:47:11 -06:00
parent da8260cba8
commit 84926ea110
1 changed files with 13 additions and 21 deletions

View File

@ -27,27 +27,19 @@ impl Android {
let id = BackendId::Android(*backend_id); let id = BackendId::Android(*backend_id);
*backend_id += 1; *backend_id += 1;
let native_activity = ndk_glue::native_activity(); let native_activity = ndk_glue::native_activity();
let mut vm = VM.lock().unwrap(); let vm_ptr = native_activity.vm();
if vm.is_none() { let vm = unsafe { jni::JavaVM::from_raw(vm_ptr) }?;
let vm_ptr = native_activity.vm(); let env = vm.attach_current_thread()?;
let new_vm = unsafe { jni::JavaVM::from_raw(vm_ptr) }?; let tts = env.new_object(
*vm = Some(new_vm); "android/speech/tts/TextToSpeech",
} "(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;)V",
if let Some(vm) = &*vm { &[
let env = vm.attach_current_thread()?; native_activity.activity().into(),
let tts = env.new_object( native_activity.activity().into(),
"android/speech/tts/TextToSpeech", ],
"(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;)V", )?;
&[ let tts = env.new_global_ref(tts)?;
native_activity.activity().into(), Ok(Self { id, tts })
native_activity.activity().into(),
],
)?;
let tts = env.new_global_ref(tts)?;
Ok(Self { id, tts })
} else {
Err(Error::NoneError)
}
} }
} }