#![allow(deprecated)]
use crate::{
JObjNew, JObjRef, JType, Result,
android::{
graphics::{Point, Rect, SurfaceTexture},
renderscript::{Allocation, RenderScript},
view::{Surface, SurfaceHolder},
},
java_class, java_constructor, java_field, java_interface, java_method,
};
#[cfg(feature = "android_hardware_vibrator")]
pub mod vibrator;
#[java_class(name = "android/hardware/Camera")]
#[deprecated(note = "我们建议使用新的android.hardware.camera2 API来编写新应用程序。")]
pub struct Camera;
impl Camera {
pub const CAMERA_ERROR_UNKNOWN: i32 = 1;
pub const CAMERA_ERROR_EVICTED: i32 = 2;
pub const CAMERA_ERROR_DISABLED: i32 = 3;
pub const CAMERA_ERROR_SERVER_DIED: i32 = 100;
pub const ACTION_NEW_PICTURE: &'static str = "android.hardware.action.NEW_PICTURE";
pub const ACTION_NEW_VIDEO: &'static str = "android.hardware.action.NEW_VIDEO";
pub const CAMERA_HAL_API_VERSION_1_0: i32 = 0x100;
pub const CAMERA_HAL_API_VERSION_3_0: i32 = 0x300;
#[java_method]
pub fn get_number_of_cameras() -> i32 {}
#[java_method]
pub fn get_camera_info(camera_id: i32, camera_info: &Camera_CameraInfo) -> Result<()> {}
#[java_method]
pub fn open(camera_id: i32) -> Result<Self> {}
#[java_method(overload = open)]
pub fn open_convenience() -> Option<Self> {}
#[java_method]
pub fn open_legacy(camera_id: i32, hal_version: i32) -> Result<Self> {}
#[doc(hidden)]
#[java_method]
pub fn check_init_errors(err: i32) -> bool {}
#[doc(hidden)]
#[java_method]
pub fn open_uninitialized() -> Self {}
#[java_method]
pub fn release(&self) {}
#[java_method]
pub fn unlock(&self) -> Result<()> {}
#[java_method]
pub fn lock(&self) -> Result<()> {}
#[java_method]
pub fn reconnect(&self) -> Result<()> {}
#[java_method]
pub fn set_preview_display<SH: SurfaceHolder>(&self, holder: Option<SH>) -> Result<()> {}
#[java_method]
pub fn set_preview_surface(&self, surface: &Surface) -> Result<()> {}
#[java_method]
pub fn set_preview_texture(&self, surface_texture: Option<&SurfaceTexture>) -> Result<()> {}
#[java_method]
pub fn start_preview(&self) -> Result<()> {}
#[java_method]
pub fn stop_preview(&self) -> Result<()> {}
#[java_method]
pub fn preview_enabled(&self) -> bool {}
#[java_method]
pub fn set_preview_callback<C: Camera_PreviewCallback>(&self, cb: Option<C>) -> Result<()> {}
#[java_method]
pub fn set_one_shot_preview_callback<C: Camera_PreviewCallback>(
&self,
cb: Option<C>,
) -> Result<()> {
}
#[java_method]
pub fn set_preview_callback_with_buffer<C: Camera_PreviewCallback>(
&self,
cb: Option<C>,
) -> Result<()> {
}
#[java_method]
pub fn add_callback_buffer(&self, callback_buffer: &[u8]) {}
#[java_method]
pub fn add_raw_image_callback_buffer(&self, callback_buffer: &[u8]) {}
#[java_method]
pub fn create_preview_allocation(&self, rs: &RenderScript, usage: i32) -> Result<Allocation> {}
#[java_method]
pub fn set_preview_callback_allocation(
&self,
preview_allocation: Option<&Allocation>,
) -> Result<()> {
}
#[java_method]
pub fn auto_focus<C: Camera_AutoFocusCallback>(&self, cb: &C) -> Result<()> {}
#[java_method]
pub fn cancel_auto_focus(&self) -> Result<()> {}
#[java_method]
pub fn set_auto_focus_move_callback<C: Camera_AutoFocusMoveCallback>(&self, cb: &C) {}
#[java_method(overload = takePicture)]
pub fn take_picture_convenience<C: Camera_ShutterCallback, D: Camera_PictureCallback>(
&self,
shutter: Option<&C>,
raw: Option<&D>,
jpeg: Option<&D>,
) -> Result<()> {
}
#[java_method]
pub fn take_picture<C: Camera_ShutterCallback, D: Camera_PictureCallback>(
&self,
shutter: Option<&C>,
raw: Option<&D>,
post_view: Option<&D>,
jpeg: Option<&D>,
) -> Result<()> {
}
#[java_method]
pub fn start_smooth_zoom(&self, value: i32) -> Result<()> {}
#[java_method]
pub fn stop_smooth_zoom(&self) -> Result<()> {}
#[java_method]
pub fn set_display_orientation(&self, degrees: i32) -> Result<()> {}
#[java_method]
pub fn enable_shutter_sound(&self, enabled: bool) -> Result<bool> {}
#[java_method]
pub fn disable_shutter_sound(&self) -> bool {}
#[java_method]
pub fn set_zoom_change_listener<L: Camera_OnZoomChangeListener>(&self, listener: &L) {}
#[java_method]
pub fn set_face_detection_listener<L: Camera_FaceDetectionListener>(&self, listener: &L) {}
#[java_method]
pub fn start_face_detection(&self) -> Result<()> {}
#[java_method]
pub fn stop_face_detection(&self) {}
#[java_method]
pub fn set_error_callback<C: Camera_ErrorCallback>(&self, cb: &C) {}
#[java_method]
pub fn set_detailed_error_callback<C: Camera_ErrorCallback>(&self, cb: &C) {}
#[java_method]
pub fn set_parameters(&self, params: Camera_Parameters) -> Result<()> {}
#[java_method]
pub fn get_parameters(&self) -> Result<Camera_Parameters> {}
#[java_method]
pub fn get_empty_parameters() -> Camera_Parameters {}
#[java_method]
pub fn get_parameters_copy(parameters: &Camera_Parameters) -> Result<Camera_Parameters> {}
#[java_method]
pub fn set_audio_restriction(&self, mode: i32) {}
#[java_method]
pub fn get_audio_restriction(&self) -> i32 {}
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议对新应用程序使用新的 android.hardware.camera2 API。")]
#[java_interface(name = "android/hardware/Camera$PreviewCallback")]
pub trait Camera_PreviewCallback {
fn on_preview_frame(&self, data: &[u8], camera: &Camera);
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议对新应用使用新的 android.hardware.camera2 API。")]
#[java_interface(name = "android/hardware/Camera$AutoFocusCallback")]
pub trait Camera_AutoFocusCallback {
fn on_auto_focus(&self, success: bool, camera: &Camera);
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议新应用程序使用新的 android.hardware.camera2 API。")]
#[java_interface(name = "android/hardware/Camera$AutoFocusMoveCallback")]
pub trait Camera_AutoFocusMoveCallback {
fn on_auto_focus_moving(&self, start: bool, camera: &Camera);
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议在新应用中使用新的 android.hardware.camera2 API。")]
#[java_interface(name = "android/hardware/Camera$ShutterCallback")]
pub trait Camera_ShutterCallback {
fn on_shutter(&self);
}
#[deprecated(note = "我们建议在新应用程序中使用新的 android.hardware.camera2 API。")]
#[allow(non_camel_case_types)]
#[java_interface(name = "android/hardware/Camera$PictureCallback")]
pub trait Camera_PictureCallback {
fn on_picture_taken(&self, data: &[u8], camera: &Camera);
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议新应用使用新的 android.hardware.camera2 API。")]
#[java_interface(name = "android/hardware/Camera$OnZoomChangeListener")]
pub trait Camera_OnZoomChangeListener {
fn on_zoom_change(&self, zoom_value: i32, stopped: bool, camera: &Camera);
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议新应用使用新的 android.hardware.camera2 API。")]
#[java_interface(name = "android/hardware/Camera$FaceDetectionListener")]
pub trait Camera_FaceDetectionListener {
fn on_face_detection(&self, faces: &[Camera_Face], camera: &Camera);
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议在新应用中使用新的 android.hardware.camera2 API。")]
#[java_class(name = "android/hardware/Camera$Face")]
pub struct Camera_Face;
impl Camera_Face {
#[java_constructor]
pub fn new() -> Self {}
#[java_field]
pub fn get_rect(&self) -> Rect {}
#[java_field]
pub fn set_rect(&self, value: &Rect) {}
#[java_field]
pub fn get_score(&self) -> i32 {}
#[java_field]
pub fn set_score(&self, value: i32) {}
#[java_field(default_value = -1)]
pub fn get_id(&self) -> i32 {}
#[java_field]
pub fn set_id(&self, value: i32) {}
#[java_field(default_value = None)]
pub fn get_left_eye(&self) -> Option<Point> {}
#[java_field]
pub fn set_left_eye(&self, value: Option<&Point>) {}
#[java_field(default_value = None)]
pub fn get_right_eye(&self) -> Option<Point> {}
#[java_field]
pub fn set_right_eye(&self, value: Option<&Point>) {}
#[java_field(default_value = None)]
pub fn get_mouth(&self) -> Option<Point> {}
#[java_field]
pub fn set_mouth(&self, value: Option<&Point>) {}
}
#[deprecated(note = "我们建议新应用使用新的android.hardware.camera2 API。")]
#[allow(non_camel_case_types)]
#[java_interface(name = "android/hardware/Camera$ErrorCallback")]
pub trait Camera_ErrorCallback {
fn on_error(&self, error: i32, camera: &Camera);
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议新应用程序使用新的 android.hardware.camera2 API。")]
#[java_class(name = "android/hardware/Camera$Parameters")]
pub struct Camera_Parameters;
impl Camera_Parameters {
#[doc(hidden)]
pub const WHITE_BALANCE_AUTO: &'static str = "auto";
#[doc(hidden)]
pub const WHITE_BALANCE_INCANDESCENT: &'static str = "incandescent";
#[doc(hidden)]
pub const WHITE_BALANCE_FLUORESCENT: &'static str = "fluorescent";
#[doc(hidden)]
pub const WHITE_BALANCE_WARM_FLUORESCENT: &'static str = "warm-fluorescent";
#[doc(hidden)]
pub const WHITE_BALANCE_DAYLIGHT: &'static str = "daylight";
#[doc(hidden)]
pub const WHITE_BALANCE_CLOUDY_DAYLIGHT: &'static str = "cloudy-daylight";
#[doc(hidden)]
pub const WHITE_BALANCE_TWILIGHT: &'static str = "twilight";
#[doc(hidden)]
pub const WHITE_BALANCE_SHADE: &'static str = "shade";
#[doc(hidden)]
pub const EFFECT_NONE: &'static str = "none";
#[doc(hidden)]
pub const EFFECT_MONO: &'static str = "mono";
#[doc(hidden)]
pub const EFFECT_NEGATIVE: &'static str = "negative";
#[doc(hidden)]
pub const EFFECT_SOLARIZE: &'static str = "solarize";
#[doc(hidden)]
pub const EFFECT_SEPIA: &'static str = "sepia";
#[doc(hidden)]
pub const EFFECT_POSTERIZE: &'static str = "posterize";
#[doc(hidden)]
pub const EFFECT_WHITEBOARD: &'static str = "whiteboard";
#[doc(hidden)]
pub const EFFECT_BLACKBOARD: &'static str = "blackboard";
#[doc(hidden)]
pub const EFFECT_AQUA: &'static str = "aqua";
#[doc(hidden)]
pub const ANTIBANDING_AUTO: &'static str = "auto";
#[doc(hidden)]
pub const ANTIBANDING_50HZ: &'static str = "50hz";
#[doc(hidden)]
pub const ANTIBANDING_60HZ: &'static str = "60hz";
#[doc(hidden)]
pub const ANTIBANDING_OFF: &'static str = "off";
pub const FLASH_MODE_OFF: &'static str = "off";
pub const FLASH_MODE_AUTO: &'static str = "auto";
pub const FLASH_MODE_ON: &'static str = "on";
pub const FLASH_MODE_RED_EYE: &'static str = "red-eye";
pub const FLASH_MODE_TORCH: &'static str = "torch";
pub const SCENE_MODE_AUTO: &'static str = "auto";
pub const SCENE_MODE_ACTION: &'static str = "action";
pub const SCENE_MODE_PORTRAIT: &'static str = "portrait";
pub const SCENE_MODE_LANDSCAPE: &'static str = "landscape";
pub const SCENE_MODE_NIGHT: &'static str = "night";
pub const SCENE_MODE_NIGHT_PORTRAIT: &'static str = "night-portrait";
pub const SCENE_MODE_THEATRE: &'static str = "theatre";
pub const SCENE_MODE_BEACH: &'static str = "beach";
pub const SCENE_MODE_SNOW: &'static str = "snow";
pub const SCENE_MODE_SUNSET: &'static str = "sunset";
pub const SCENE_MODE_STEADYPHOTO: &'static str = "steadyphoto";
pub const SCENE_MODE_FIREWORKS: &'static str = "fireworks";
pub const SCENE_MODE_SPORTS: &'static str = "sports";
pub const SCENE_MODE_PARTY: &'static str = "party";
pub const SCENE_MODE_CANDLELIGHT: &'static str = "candlelight";
pub const SCENE_MODE_BARCODE: &'static str = "barcode";
pub const SCENE_MODE_HDR: &'static str = "hdr";
pub const FOCUS_MODE_AUTO: &'static str = "auto";
pub const FOCUS_MODE_INFINITY: &'static str = "infinity";
pub const FOCUS_MODE_MACRO: &'static str = "macro";
pub const FOCUS_MODE_FIXED: &'static str = "fixed";
pub const FOCUS_MODE_EDOF: &'static str = "edof";
pub const FOCUS_MODE_CONTINUOUS_VIDEO: &'static str = "continuous-video";
pub const FOCUS_MODE_CONTINUOUS_PICTURE: &'static str = "continuous-picture";
pub const FOCUS_DISTANCE_NEAR_INDEX: i32 = 0;
pub const FOCUS_DISTANCE_OPTIMAL_INDEX: i32 = 1;
pub const FOCUS_DISTANCE_FAR_INDEX: i32 = 2;
pub const PREVIEW_FPS_MIN_INDEX: i32 = 0;
pub const PREVIEW_FPS_MAX_INDEX: i32 = 1;
#[java_method]
pub fn copy_from(&self, other: &Self) {}
#[java_method]
pub fn same(&self, other: &Self) -> bool {}
#[deprecated]
#[java_method]
pub fn dump(&self) {}
#[java_method]
pub fn flatten(&self) -> String {}
#[java_method]
pub fn unflatten(&self, flattened: String) {}
#[doc(hidden)]
#[java_method]
pub fn remove(&self, key: String) {}
#[java_method]
pub fn set(&self, key: String, value: String) {}
#[java_method(overload = set)]
pub fn set_int(&self, key: String, value: i32) {}
#[java_method]
pub fn get(&self, key: String) -> Result<String> {}
#[java_method]
pub fn get_int(&self, key: String) -> Result<i32> {}
#[java_method]
pub fn set_preview_size(&self, width: i32, height: i32) -> Result<()> {}
#[java_method]
pub fn get_preview_size(&self) -> Camera_Size {}
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议在新应用程序中使用新的 android.hardware.camera2 API。")]
#[java_class(name = "android/hardware/Camera$Size")]
pub struct Camera_Size;
impl Camera_Size {
#[java_constructor]
pub fn new(w: i32, h: i32) -> Self {}
#[java_field]
pub fn get_width(&self) -> i32 {}
#[java_field]
pub fn set_width(&self, value: i32) {}
#[java_field]
pub fn get_height(&self) -> i32 {}
#[java_field]
pub fn set_height(&self, value: i32) {}
}
#[allow(non_camel_case_types)]
#[deprecated(note = "我们建议对新应用程序使用新的 android.hardware.camera2 API。")]
#[java_class(name = "android/hardware/Camera$Area")]
pub struct Camera_Area;
impl Camera_Area {
#[java_constructor]
pub fn new(rect: &Rect, weight: i32) -> Self {}
#[java_field]
pub fn get_rect(&self) -> Rect {}
#[java_field]
pub fn set_rect(&self, value: &Rect) {}
#[java_field]
pub fn get_weight(&self) -> i32 {}
#[java_field]
pub fn set_weight(&self, value: i32) {}
}
#[allow(non_camel_case_types)]
#[java_class(name = "android/hardware/Camera$CameraInfo")]
#[deprecated(note = "我们建议新应用程序使用新的 android.hardware.camera2 API。")]
pub struct Camera_CameraInfo;
impl Camera_CameraInfo {
pub const CAMERA_FACING_BACK: i32 = 0;
pub const CAMERA_FACING_FRONT: i32 = 1;
#[doc(hidden)]
#[java_constructor]
pub fn new() -> Self {}
#[java_field]
pub fn get_facing(&self) -> i32 {}
#[java_field]
pub fn set_facing(&self, value: i32) {}
#[java_field]
pub fn get_orientation(&self) -> i32 {}
#[java_field]
pub fn set_orientation(&self, value: i32) {}
#[java_field]
pub fn get_can_disable_shutter_sound(&self) -> bool {}
#[java_field]
pub fn set_can_disable_shutter_sound(&self, value: bool) {}
}
#[cfg(feature = "test_android_hardware")]
pub fn test() {
use crate::android::app::Activity;
let act = Activity::fetch().unwrap();
let camera_permission = crate::android::Manifest_permission::CAMERA.to_string();
let permissions = vec![camera_permission.clone()];
act.request_permissions(&permissions, 100).unwrap();
if act.check_self_permission(camera_permission)
== crate::android::content::pm::PackageManager::PERMISSION_GRANTED
{
let info = Camera_CameraInfo::new();
Camera::get_camera_info(Camera_CameraInfo::CAMERA_FACING_BACK, &info).unwrap();
dbg!(&info);
assert!(Camera::get_number_of_cameras() > 0);
let camera = Camera::open(0).unwrap();
camera.release();
let camera = Camera::open_convenience().unwrap();
camera.unlock().unwrap();
camera.lock().unwrap();
dbg!(&camera);
camera.release();
} else {
println!("No camera permission.");
}
}