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