pub mod types;
pub mod device;
pub mod nnapi;
pub mod gpu;
pub mod jni;
pub mod engine;
pub use types::*;
pub use device::AndroidDeviceInfo;
pub use engine::AndroidInferenceEngine;
pub use nnapi::{NNAPIDeviceManager, NNAPIExecutor, NNAPIModelBuilder};
pub use gpu::{VulkanComputeContext, OpenGLESComputeContext};
pub use jni::utils;
pub fn initialize() -> crate::Result<()> {
tracing::info!("Initializing Android platform support");
let device_info = AndroidDeviceInfo::detect();
tracing::info!("Device: {} {}", device_info.manufacturer, device_info.model);
tracing::info!("Android {} (API {})", device_info.android_version, device_info.api_level);
tracing::info!("Memory: {}MB, CPU cores: {}", device_info.total_memory_mb, device_info.cpu_cores);
if device_info.nnapi_info.is_some() {
tracing::info!("NNAPI hardware acceleration available");
}
if device_info.gpu_info.vulkan_supported {
tracing::info!("Vulkan GPU acceleration supported");
}
if device_info.gpu_info.opengl_es_version >= "3.1" {
tracing::info!("OpenGL ES compute shaders supported");
}
Ok(())
}
pub fn supports_hardware_acceleration() -> bool {
AndroidInferenceEngine::has_hardware_acceleration()
}
pub fn get_recommended_config() -> crate::MobileConfig {
let device_info = AndroidDeviceInfo::detect();
device_info.get_recommended_config()
}