polyhorn_android_sys/
bitmap_factory.rs

1use jni::objects::JValue;
2
3use super::{Bitmap, Env, Object};
4
5pub struct BitmapFactory;
6
7impl BitmapFactory {
8    pub fn decode_byte_array(env: &Env, bytes: &[u8]) -> Result<Bitmap, String> {
9        unsafe {
10            let reference = env.call_static_method(
11                "android/graphics/BitmapFactory",
12                "decodeByteArray",
13                "([BII)Landroid/graphics/Bitmap;",
14                &[
15                    JValue::Object(env.byte_array(bytes)),
16                    JValue::Int(0),
17                    JValue::Int(bytes.len() as i32),
18                ],
19            );
20            Ok(Bitmap::from_reference(
21                env.retain(env.assume_object(reference)),
22            ))
23        }
24    }
25}