اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
مرجع بنية 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)
|
|
التعريف في السطر
99
من الملف
camera.h
.
بدء التركيز التلقائي، يتم استدعاء دالة الاستدعاء للإشعار باستخدام CAMERA_MSG_FOCUS مرة واحدة عند اكتمال التركيز. سيتم استدعاء autoFocus() مرة أخرى إذا كان هناك حاجة إلى تركيز تلقائي آخر.
التعريف في السطر
227
من الملف
camera.h
.
تؤدي إلى إلغاء ميزة "التركيز التلقائي". إذا كان التركيز التلقائي لا يزال قيد التنفيذ، ستلغي هذه الوظيفة هذا الإجراء. سواء كان وضع التركيز التلقائي قيد التنفيذ أم لا، ستعيد هذه الدالة موضع التركيز إلى الإعداد التلقائي. إذا كانت الكاميرا لا تتيح ضبط التركيز التلقائي، لن يكون هذا الخيار متاحًا.
التعريف في السطر
235
من الملف
camera.h
.
إلغاء صورة تم البدء بها باستخدام takePicture لن يؤدي استدعاء هذه الطريقة إلى أي إجراء عندما لا يتم التقاط صورة.
التعريف في السطر
246
من الملف
camera.h
.
void(* disable_msg_type)(struct
camera_device
*, int32_t msg_type)
|
إيقاف رسالة أو مجموعة من الرسائل
بعد تلقّي طلب لإيقاف MsgType(CAMERA_MSG_VIDEO_FRAME)، يجب ألا يعتمد معرّف HAL للكاميرا على العميل لطلب releaseRecordingFrame() لتحرير لقطات تسجيل الفيديو التي أرسلها معرّف HAL للكاميرا قبل طلب إيقاف MsgType(CAMERA_MSG_VIDEO_FRAME) وبعده. يجب ألا تعدِّل عملاء Camera HAL أي إطار لتسجيل الفيديو أو تصل إليه بعد استدعاء disableMsgType(CAMERA_MSG_VIDEO_FRAME).
التعريف في السطر
132
من الملف
camera.h
.
تفريغ حالة أجهزة الكاميرا
التعريف في السطر
282
من الملف
camera.h
.
void(* enable_msg_type)(struct
camera_device
*, int32_t msg_type)
|
تأخذ الدوال الثلاث التالية جميعًا msg_type، وهي قناع بتات للرسائل المحدّدة في include/ui/Camera.h. يمكنك تفعيل رسالة أو مجموعة من الرسائل.
التعريف في السطر
120
من الملف
camera.h
.
استرداد مَعلمات الكاميرا يجب إرجاع المخزن المؤقت الذي يعرضه HAL للكاميرا إليه باستخدام put_parameters، إذا لم تكن قيمة put_parameters هي NULL.
التعريف في السطر
258
من الملف
camera.h
.
int(* msg_type_enabled)(struct
camera_device
*, int32_t msg_type)
|
الاستعلام عمّا إذا كانت رسالة أو مجموعة من الرسائل مفعَّلة يُرجى العلم أنّ هذه الدالة تعمل كدالّة AND، وإذا كانت أيّ من الرسائل التي تم الاستعلام عنها غير مفعّلة، ستظهر القيمة false.
التعريف في السطر
139
من الملف
camera.h
.
تعرِض هذه الدالة القيمة "صحيح" إذا كانت ميزة المعاينة مفعَّلة.
التعريف في السطر
154
من الملف
camera.h
.
يستخدم HAL للكاميرا ذاكرته الخاصة لتمرير المَعلمات إلينا عند استدعاء get_parameters. استخدِم هذه الدالة لإعادة الذاكرة إلى HAL للكاميرا، إذا لم تكن put_parameters فارغة. إذا كانت put_parameters فارغة، عليك استخدام free() لتحرير الذاكرة.
التعريف في السطر
265
من الملف
camera.h
.
تعرِض هذه الدالة القيمة true إذا كان التسجيل مفعَّلاً.
التعريف في السطر
208
من الملف
camera.h
.
تحرير موارد الأجهزة التي يملكها هذا العنصر يُرجى العِلم أنّه تتم
عدم
ذلك في الدالة المخصّصة لتدمير العنصر.
التعريف في السطر
277
من الملف
camera.h
.
void(* release_recording_frame)(struct
camera_device
*, const void *opaque)
|
تحرير إطار تسجيل تم إرجاعه سابقًا من خلال CAMERA_MSG_VIDEO_FRAME
تقع على عاتق العميل في HAL للكاميرا مسؤولية تحرير لقطات تسجيل الفيديو التي ترسلها طبقة HAL للكاميرا قبل أن تتلقّى طبقة HAL للكاميرا طلبًا لإيقاف MsgType(CAMERA_MSG_VIDEO_FRAME). بعد تلقّي طلب disableMsgType(CAMERA_MSG_VIDEO_FRAME)، تتحمّل واجهة HAL للكاميرا مسؤولية إدارة دورة حياة إطارات تسجيل الفيديو.
التعريف في السطر
219
من الملف
camera.h
.
int(* send_command)(struct
camera_device
*, int32_t cmd, int32_t arg1, int32_t arg2)
|
إرسال الأمر إلى برنامج تشغيل الكاميرا
التعريف في السطر
270
من الملف
camera.h
.
ضبط طلبات استدعاء الإشعارات والبيانات
التعريف في السطر
105
من الملف
camera.h
.
اضبط مَعلمات الكاميرا. تعرِض هذه الدالة القيمة BAD_VALUE إذا كانت أي مَعلمة غير صالحة أو غير متوافقة.
التعريف في السطر
252
من الملف
camera.h
.
ضبط ANativeWindow التي يتم إرسال لقطات المعاينة إليها
التعريف في السطر
101
من الملف
camera.h
.
فعِّل وضع المعاينة.
التعريف في السطر
144
من الملف
camera.h
.
شغِّل وضع التسجيل. عندما تتوفّر صورة للتسجيل، يتم إرسال رسالة CAMERA_MSG_VIDEO_FRAME مع الإطار المقابل. يجب أن يُطلق كل إطار تسجيل من قِبل برنامج HAL للكاميرا من خلال releaseRecordingFrame() قبل أن يطلب البرنامج disableMsgType(CAMERA_MSG_VIDEO_FRAME). بعد أن يطلب العميل disableMsgType(CAMERA_MSG_VIDEO_FRAME)، تقع على عاتق واجهة HAL للكاميرا مسؤولية إدارة دورة حياة إطارات تسجيل الفيديو، ويجب ألا يعدّل العميل أي إطارات تسجيل فيديو أو يصل إليها.
التعريف في السطر
198
من الملف
camera.h
.
إيقاف معاينة سبق أن بدأت
التعريف في السطر
149
من الملف
camera.h
.
إيقاف تسجيل سبق أن بدأ
التعريف في السطر
203
من الملف
camera.h
.
int(* store_meta_data_in_buffers)(struct
camera_device
*, int enable)
|
اطلب من HAL للكاميرا تخزين البيانات الوصفية أو بيانات YUV الحقيقية في مخازن الفيديو المؤقتة التي يتم إرسالها من خلال CAMERA_MSG_VIDEO_FRAME لجلسة تسجيل. في حال عدم استدعاء هذه الوظيفة، يكون السلوك التلقائي لواجهة HAL للكاميرا هو تخزين بيانات YUV الحقيقية في ذاكرات التخزين المؤقت للفيديو.
يجب استدعاء هذه الطريقة قبل startRecording() لكي تكون فعّالة.
في حال تخزين البيانات الوصفية في ذاكرة التخزين المؤقت للفيديوهات، يكون على جهاز الاستقبال تفسير المحتوى والعثور على بيانات اللقطات الفعلية باستخدام البيانات الوصفية في ذاكرة التخزين المؤقت. لا يتناول هذا المقال كيفية إجراء ذلك.
قد لا تتوافق بعض طبقات HAL للكاميرا مع تخزين البيانات الوصفية في ذاكرة التخزين المؤقت للفيديو، ولكن من المفترض أن تتوافق جميع طبقات HAL للكاميرا مع تخزين بيانات YUV الحقيقية في ذاكرة التخزين المؤقت للفيديو. إذا كانت طبقة HAL للكاميرا لا تتيح تخزين البيانات الوصفية في ذاكرة التخزين المؤقت للفيديو عند طلب ذلك، يجب عرض INVALID_OPERATION. من المفيد جدًا أن يُرسِل HAL للكاميرا البيانات الوصفية بدلاً من بيانات اللقطات الفعلية مباشرةً إلى برنامج ترميز الفيديو، لأنّ مقدار بيانات اللقطات غير المضغوطة يمكن أن يكون كبيرًا جدًا إذا كان حجم الفيديو كبيرًا.
-
المعلمات
-
تفعيل
|
إذا كانت القيمة "true"، يتم توجيه HAL للكاميرا لتخزين البيانات الوصفية في ذاكرة التخزين المؤقت للفيديو. إذا كانت القيمة "false"، يتم توجيه HAL للكاميرا لتخزين بيانات YUV الحقيقية في ذاكرة التخزين المؤقت للفيديو.
|
-
المرتجعات
-
حسنًا.
التعريف في السطر
186
من الملف
camera.h
.
تم إنشاء مستندات هذه البنية من الملف التالي:
-
hardware/libhardware/include/hardware/
camera.h
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-03-26 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-03-26 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]