From fefc1cbfa6f3e70aa58da17e827821fd5a1cb79f Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Mon, 21 Nov 2022 10:32:46 +0000 Subject: [PATCH] ndk-examples: update to use jni 0.20 (#366) --- ndk-examples/Cargo.toml | 2 +- ndk-examples/examples/jni_audio.rs | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ndk-examples/Cargo.toml b/ndk-examples/Cargo.toml index ad250ffc..5c22b30f 100644 --- a/ndk-examples/Cargo.toml +++ b/ndk-examples/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" publish = false [target.'cfg(target_os = "android")'.dependencies] -jni = "0.19" +jni = "0.20" libc = "0.2" log = "0.4.14" ndk = { path = "../ndk", features = ["api-level-23"] } diff --git a/ndk-examples/examples/jni_audio.rs b/ndk-examples/examples/jni_audio.rs index 9880bf67..3a339858 100644 --- a/ndk-examples/examples/jni_audio.rs +++ b/ndk-examples/examples/jni_audio.rs @@ -1,3 +1,5 @@ +use jni::objects::JObject; + #[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))] fn main() { enumerate_audio_devices().unwrap(); @@ -9,6 +11,7 @@ fn enumerate_audio_devices() -> Result<(), Box> { // Create a VM for executing Java calls let ctx = ndk_context::android_context(); let vm = unsafe { jni::JavaVM::from_raw(ctx.vm().cast()) }?; + let context = unsafe { JObject::from_raw(ctx.context().cast()) }; let env = vm.attach_current_thread()?; // Query the global Audio Service @@ -17,7 +20,7 @@ fn enumerate_audio_devices() -> Result<(), Box> { let audio_manager = env .call_method( - ctx.context().cast(), + context, "getSystemService", // JNI type signature needs to be derived from the Java API // (ArgTys)ResultTy @@ -36,7 +39,7 @@ fn enumerate_audio_devices() -> Result<(), Box> { println!("-- Output Audio Devices --"); - let device_array = devices.l()?.into_inner(); + let device_array = devices.l()?.into_raw(); let len = env.get_array_length(device_array)?; for i in 0..len { let device = env.get_object_array_element(device_array, i)?; @@ -56,7 +59,7 @@ fn enumerate_audio_devices() -> Result<(), Box> { let sample_array = env .call_method(device, "getSampleRates", "()[I", &[])? .l()? - .into_inner(); + .into_raw(); let len = env.get_array_length(sample_array)?; let mut sample_rates = vec![0; len as usize];