Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Tài liệu tham khảo về cấu trúc camera_device_ops
#include <
camera.h
>
|
int(*
|
set_preview_window
)(struct
camera_device
*, struct
preview_stream_ops
*window)
|
|
void(*
|
set_callbacks
)(struct
camera_device
*,
camera_notify_callback
notify_cb,
camera_data_callback
data_cb,
camera_data_timestamp_callback
data_cb_timestamp,
camera_request_memory
get_memory, void *user)
|
|
void(*
|
enable_msg_type
)(struct
camera_device
*, int32_t msg_type)
|
|
void(*
|
disable_msg_type
)(struct
camera_device
*, int32_t msg_type)
|
|
int(*
|
msg_type_enabled
)(struct
camera_device
*, int32_t msg_type)
|
|
int(*
|
start_preview
)(struct
camera_device
*)
|
|
void(*
|
stop_preview
)(struct
camera_device
*)
|
|
int(*
|
preview_enabled
)(struct
camera_device
*)
|
|
int(*
|
store_meta_data_in_buffers
)(struct
camera_device
*, int enable)
|
|
int(*
|
start_recording
)(struct
camera_device
*)
|
|
void(*
|
stop_recording
)(struct
camera_device
*)
|
|
int(*
|
recording_enabled
)(struct
camera_device
*)
|
|
void(*
|
release_recording_frame
)(struct
camera_device
*, const void *opaque)
|
|
int(*
|
auto_focus
)(struct
camera_device
*)
|
|
int(*
|
cancel_auto_focus
)(struct
camera_device
*)
|
|
int(*
|
take_picture
)(struct
camera_device
*)
|
|
int(*
|
cancel_picture
)(struct
camera_device
*)
|
|
int(*
|
set_parameters
)(struct
camera_device
*, const char *parms)
|
|
char *(*
|
get_parameters
)(struct
camera_device
*)
|
|
void(*
|
put_parameters
(struct
camera_device
*, char *)
|
|
int(*
|
send_command
(struct
camera_device
*, int32_t cmd, int32_t arg1, int32_t arg2)
|
|
void(*
|
release
)(struct
camera_device
*)
|
|
int(*
|
dump
)(struct
camera_device
*, int fd)
|
|
Định nghĩa tại dòng
99
của tệp
camera.h
.
Bắt đầu tự động lấy nét, quy trình gọi lại thông báo được gọi bằng CAMERA_MSG_FOCUS một lần khi quá trình lấy nét hoàn tất. autoFocus() sẽ được gọi lại nếu cần lấy nét tự động khác.
Định nghĩa tại dòng
227
của tệp
camera.h
.
Huỷ chức năng tự động lấy nét. Nếu tính năng tự động lấy nét vẫn đang diễn ra, thì hàm này sẽ huỷ tính năng đó. Cho dù tính năng tự động lấy nét đang diễn ra hay không, hàm này sẽ trả về vị trí lấy nét về vị trí mặc định. Nếu máy ảnh không hỗ trợ tính năng tự động lấy nét, thì bạn không thể thực hiện thao tác này.
Định nghĩa tại dòng
235
của tệp
camera.h
.
Huỷ ảnh đã bắt đầu bằng takePicture. Việc gọi phương thức này khi không có ảnh nào được chụp sẽ không có tác dụng.
Định nghĩa tại dòng
246
của tệp
camera.h
.
void(* disable_msg_type)(struct
camera_device
*, int32_t msg_type)
|
Tắt một thông báo hoặc một nhóm thông báo.
Sau khi nhận được lệnh gọi đến disableMsgType(CAMERA_MSG_VIDEO_FRAME), HAL máy ảnh không được dựa vào ứng dụng của mình để gọi releaseRecordingFrame() nhằm phát hành các khung hình quay video do HAL máy ảnh gửi trước và sau lệnh gọi disableMsgType(CAMERA_MSG_VIDEO_FRAME). Ứng dụng HAL máy ảnh không được sửa đổi/truy cập vào bất kỳ khung hình quay video nào sau khi gọi disableMsgType(CAMERA_MSG_VIDEO_FRAME).
Định nghĩa tại dòng
132
của tệp
camera.h
.
Trạng thái kết xuất của phần cứng máy ảnh
Định nghĩa tại dòng
282
của tệp
camera.h
.
void(* enable_msg_type)(struct
camera_device
*, int32_t msg_type)
|
Ba hàm sau đây đều lấy một msg_type, đây là một mặt nạ bit của các thông báo được xác định trong include/ui/Camera.h Bật một thông báo hoặc một tập hợp thông báo.
Định nghĩa tại dòng
120
của tệp
camera.h
.
Truy xuất các thông số của máy ảnh. Bạn phải trả về vùng đệm do HAL máy ảnh trả về bằng put_parameters, nếu put_parameters không phải là NULL.
Định nghĩa tại dòng
258
của tệp
camera.h
.
int(* msg_type_enabled)(struct
camera_device
*, int32_t msg_type)
|
Truy vấn xem một thông báo hoặc một nhóm thông báo có được bật hay không. Xin lưu ý rằng hàm này hoạt động như một hàm AND, nếu bất kỳ thông báo nào được truy vấn đang tắt, thì hàm này sẽ trả về giá trị false.
Định nghĩa tại dòng
139
của tệp
camera.h
.
Trả về true nếu bản xem trước được bật.
Định nghĩa tại dòng
154
của tệp
camera.h
.
HAL máy ảnh sử dụng bộ nhớ riêng để truyền cho chúng ta các tham số khi chúng ta gọi get_parameters. Sử dụng hàm này để trả về bộ nhớ cho HAL máy ảnh, nếu put_parameters không phải là NULL. Nếu put_parameters là NULL, thì bạn phải sử dụng free() để giải phóng bộ nhớ.
Định nghĩa tại dòng
265
của tệp
camera.h
.
Trả về true nếu tính năng ghi lại đang bật.
Định nghĩa tại dòng
208
của tệp
camera.h
.
Giải phóng tài nguyên phần cứng do đối tượng này sở hữu. Xin lưu ý rằng việc này
không
được thực hiện trong hàm huỷ.
Định nghĩa tại dòng
277
của tệp
camera.h
.
void(* release_recording_frame)(struct
camera_device
*, const void *opaque)
|
Giải phóng khung ghi mà CAMERA_MSG_VIDEO_FRAME trả về trước đó.
Ứng dụng HAL máy ảnh có trách nhiệm phát hành các khung hình quay video do HAL máy ảnh gửi trước khi HAL máy ảnh nhận được lệnh gọi disableMsgType(CAMERA_MSG_VIDEO_FRAME). Sau khi nhận được lệnh gọi disableMsgType(CAMERA_MSG_VIDEO_FRAME), HAL máy ảnh có trách nhiệm quản lý vòng đời của các khung hình quay video.
Định nghĩa tại dòng
219
của tệp
camera.h
.
int(* send_command)(struct
camera_device
*, int32_t cmd, int32_t arg1, int32_t arg2)
|
Gửi lệnh đến trình điều khiển máy ảnh.
Định nghĩa tại dòng
270
của tệp
camera.h
.
Đặt lệnh gọi lại thông báo và dữ liệu
Định nghĩa tại dòng
105
của tệp
camera.h
.
Đặt các thông số của máy ảnh. Hàm này trả về BAD_VALUE nếu có tham số nào không hợp lệ hoặc không được hỗ trợ.
Định nghĩa tại dòng
252
của tệp
camera.h
.
Đặt ANativeWindow mà các khung xem trước được gửi đến
Định nghĩa tại dòng
101
của tệp
camera.h
.
Bắt đầu chế độ xem trước.
Định nghĩa tại dòng
144
của tệp
camera.h
.
Bắt đầu chế độ ghi. Khi có hình ảnh ghi lại, hệ thống sẽ gửi thông báo CAMERA_MSG_VIDEO_FRAME cùng với khung tương ứng. Mọi khung ghi phải được ứng dụng HAL máy ảnh phát hành thông qua releaseRecordingFrame() trước khi ứng dụng gọi disableMsgType(CAMERA_MSG_VIDEO_FRAME). Sau khi ứng dụng gọi disableMsgType(CAMERA_MSG_VIDEO_FRAME), HAL máy ảnh sẽ chịu trách nhiệm quản lý vòng đời của các khung hình quay video và ứng dụng không được sửa đổi/truy cập vào bất kỳ khung hình quay video nào.
Định nghĩa tại dòng
198
của tệp
camera.h
.
Dừng bản xem trước đã bắt đầu trước đó.
Định nghĩa tại dòng
149
của tệp
camera.h
.
Dừng bản ghi đã bắt đầu trước đó.
Định nghĩa tại dòng
203
của tệp
camera.h
.
int(* store_meta_data_in_buffers)(struct
camera_device
*, int enable)
|
Yêu cầu HAL máy ảnh lưu trữ siêu dữ liệu hoặc dữ liệu YUV thực trong vùng đệm video được gửi qua CAMERA_MSG_VIDEO_FRAME cho một phiên ghi. Nếu không được gọi, hành vi mặc định của HAL máy ảnh là lưu trữ dữ liệu YUV thực trong vùng đệm video.
Bạn nên gọi phương thức này trước khi startRecording() để có hiệu quả.
Nếu siêu dữ liệu được lưu trữ trong vùng đệm video, thì việc diễn giải nội dung và tìm dữ liệu khung hình thực tế sẽ tuỳ thuộc vào bộ thu của vùng đệm video nhờ siêu dữ liệu trong vùng đệm. Cách thực hiện việc này nằm ngoài phạm vi của phương thức này.
Một số HAL máy ảnh có thể không hỗ trợ lưu trữ siêu dữ liệu trong vùng đệm video, nhưng tất cả HAL máy ảnh đều phải hỗ trợ lưu trữ dữ liệu YUV thực trong vùng đệm video. Nếu HAL máy ảnh không hỗ trợ lưu trữ siêu dữ liệu trong vùng đệm video khi được yêu cầu thực hiện việc này, thì bạn phải trả về INVALID_OPERATION. Việc HAL máy ảnh truyền dữ liệu siêu dữ liệu thay vì dữ liệu khung hình thực tế trực tiếp đến bộ mã hoá video sẽ rất hữu ích, vì lượng dữ liệu khung hình không nén có thể rất lớn nếu kích thước video lớn.
-
Tham số
-
bật
|
nếu đúng để hướng dẫn HAL máy ảnh lưu trữ siêu dữ liệu trong vùng đệm video; sai để hướng dẫn HAL máy ảnh lưu trữ dữ liệu YUV thực trong vùng đệm video.
|
-
Giá trị trả về
-
OK khi thành công.
Định nghĩa tại dòng
186
của tệp
camera.h
.
Tài liệu cho cấu trúc này được tạo từ tệp sau:
-
hardware/libhardware/include/hardware/
camera.h
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-03-26 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-03-26 UTC."],[],[]]