يتضمّن إصدار Android 13 عددًا من التغييرات على Camera ITS. بالإضافة إلى التغييرات المتزايدة، مثل إصدارات Python والحِزم المعدَّلة وتعديلات الأجهزة الاختبارية، يتيح Android 13 اختبار الفيديو.
تلخِّص هذه الصفحة التغييرات في واجهة برمجة التطبيقات Camera ITS لنظام التشغيل Android 13. تندرج التغييرات ضمن سبع فئات عامة:
- إصدارات Python والحزمة
- الإضافات إلى ملف الإعداد
- اختبار التغييرات
- اختبارات جديدة مستندة إلى الأجهزة اللوحية
- اختبار الفيديو
- تعديلات الأجهزة وإضافاتها
- إتاحة اختبار الأجهزة القابلة للطي
إصدارات Python والحِزم
يتوافق الإصدار 13 من Android مع إصدارات Python التالية بالإضافة إلى إصدارات Python والمكتبات المتوافقة مع الإصدار 12 من Android:
- Python 3.9.2
- OpenCV 4.2.0
- Numpy 1.20.3
- Matplotlib 3.3.4
- Scipy 1.6.2
- pySerial 3.5
- Pillow 8.3.1
- PyYAML 5.4.1
- Mobly 1.11
- FFmpeg 4.4.1
إضافات ملف الإعداد
بسبب إضافة ميزة التحكّم في الإضاءة لاختبار test_auto_flash.py
، يحتاج ملف
config.yml
إلى مَعلمتَين إضافيتَين لوحدة التحكّم و
قناة الإضاءة. لتحديد ما إذا كان الجهاز الذي يتم اختباره (DUT) قابلاً للطي
أم لا، يتطلب ملف config.yml
مَعلمة ثالثة إضافية يجب
إضافتها إلى كل من قسمَي الدمج المستنِد إلى الجهاز اللوحي ودمج المستشعرات.
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
foldable_device: "False". # set "True" if testing foldable
scene: <scene-name> # if <scene-name> runs all scenes
اختبار التغييرات
scene1_1/test_black_white.py
يتضمّن اختبار test_black_white
عملية التحقّق من تشبع القناة
المتوافقة مع الإصدارات السابقة من Android، ما يعني أنّ المستوى الأول المطلوب من واجهة برمجة التطبيقات لإجراء عملية التحقّق من تشبع القناة هو Android
10.
scene1_2/test_yuv_plus_raw.py
يعالج اختبار test_yuv_plus_raw
وحدات الاستشعار التي لا تستخدم نسبة العرض إلى الارتفاع 16:9 أو 4:3 لتوفير
دعم أفضل لتنسيق RAW. إذا لم يتمكّن الاختبار من العثور على تنسيق مشترك
بين تنسيق RAW الخاص بجهاز الاستشعار وتنسيقات الالتقاط بتنسيق YUV، يقارن الاختبار
عملية الالتقاط بتنسيق RAW بعملية الالتقاط الأكبر بتنسيق YUV حتى إذا كانت نسب العرض إلى الارتفاع
مختلفة.
scene2_a/test_faces.py
تم إعادة تنظيم test_faces
إلى test_num_faces
.
scene2_a/test_num_faces.py
يعالج اختبار test_num_faces
اقتصاص المستشعر ويضع مستطيلات
الوجوه بشكل صحيح على لقطات الكاميرا ذات الزاوية الواسعة التي تم اقتصاصها.
scene3/test_lens_position.py
تم إيقاف اختبار test_lens_position
نهائيًا في Android
13.
scene6/test_zoom.py
تمّت إعادة صياغة اختبار test_zoom
لتسهيل اختبار أنظمة الكاميرات التي تتضمّن ثلاث كاميرات أو أربع كاميرات. إذا اجتازت الكاميرا الاختبار بشكل صحيح على نطاق نسبة تكبير 10x،
ينتهي الاختبار بشكل صحيح. يتيح ذلك إجراء اختبار التكبير/التصغير على مسافة واحدة
للرسم البياني.
scene_change/test_scene_change.py
تم إيقاف اختبار test_scene_change
نهائيًا في Android
13.
اختبارات جديدة مستندة إلى الأجهزة اللوحية
يتضمّن نظام Android 13 اختبارَين جديدَين للأجهزة اللوحية. يجب إجراء كلا الاختبارَين على الأجهزة التي تعمل بالإصدار Android 13، ولكن يمكن تخطّيهما على الأجهزة التي يتم ترقيتها إلى Android 13.
المشهد | اسم الاختبار | المستوى الأول من واجهة برمجة التطبيقات | الوصف |
---|---|---|---|
2_a | test_auto_flash | 33 | تأكيد أنّ المشاهد المظلمة تؤدي إلى تفعيل الفلاش التلقائي |
2_b | test_yuv_jpg_capture_sameness | 33 | يؤكد أنّ لقطات YUV وJPEG لا تزال متطابقة بتقسيم الوحدات. |
scene2_a/test_auto_flash.py
يضيف Android 13 اختبار test_auto_flash
.
المعلمات
flash
: يتم تخطّي الاختبار في حال عدم توفّر فلاش.
الطريقة
يضبط الاختبار طلب الالتقاط للفلاش التلقائي ويعرض مشهدًا
يتطلب حدث فلاش. يتم إطفاء الإضاءة في جهاز الاختبار والجهاز اللوحي
لعرض مشهد داكن لخوارزمية التعريض التلقائي. يُعدّ الاختبار
تسلسلاً من عمليات الالتقاط التي تبلغ NUM_FRAMES
مع تفعيل الفلاش التلقائي. إذا كان الإعداد
AE_STATE
يعرض FLASH_REQUIRED
، يتحقق الاختبار من أنّه يتم
تفعيل الفلاش في اللقطات.
يمكن التحكّم في الإضاءة يدويًا عند ظهور طلب بذلك، أو تلقائيًا باستخدام معالج تحكم
Arduino مع إضافة ميزة التحكّم في الإضاءة للاختبار المبرمَج. يُجمِّع مجلد
الأدوات الجديد lighting_control_utils
الرموز البرمجية للتحكّم في
الإضاءة في الاختبارات.
scene2_a/test_yuv_jpeg_capture_sameness.py
يضيف Android 13 test_yuv_jpeg_capture_sameness
الاختبار.
المعلمات
-
streamUseCase
: لتحديد ما إذا كانت الكاميرا تتيح استخدام حالة البث android.jpeg.quality
: لضبط جودة JPEG على 100
الطريقة
يُسجِّل هذا الاختبار صورتَين باستخدام أكبر تنسيقَين شائعَين من YUV وJPEG وبنسبة العرض إلى الارتفاع نفسها لأكبر تنسيق JPEG، ولا تتجاوز دقتهما
1920×1440. يضبط الاختبار jpeg.quality
على 100 ويُسجِّل طلب سطحَين متضادَين. بعد ذلك، يتم تحويل كلتا الصورتَين إلى صفائف RGB وحساب الفرق في قياس RMS الثلاثي الأبعاد بين الصورتَين. تم ضبط الحدّ المسموح به للاختلاف
على %1.
اختبار الفيديو
توفّر واجهة برمجة التطبيقات لاختبار الأداء (ITS) في الكاميرا إمكانية اختبار الفيديو في Android 13.
يضيف نظام Android 13 الاختبارات التالية:
المشهد | اسم الاختبار | المستوى الأول من واجهة برمجة التطبيقات | الوصف |
---|---|---|---|
4 | test_preview_stabilization_fov | 33 | التأكّد من أنّ معاينة الفيديو لا يتم اقتصاصها كثيرًا عند تفعيل ميزة تثبيت الصورة |
4 | test_video_aspect_ratio_and_crop | 33 | تأكيد تنسيقات الفيديو وحجمه ونسب العرض إلى الارتفاع والاقتصاص |
sensor_fusion | test_preview_stabilition | 33 | التأكّد من أنّ ميزة تثبيت الصورة في المعاينة تعمل |
sensor_fusion | test_video_stabilition | 33 | تأكيد عمل ميزة "تثبيت صورة الفيديو" |
scene4/test_preview_stabilization_fov.py
يضيف Android 13 test_preview_stabilization_fov
الاختبار. يتحقّق هذا الاختبار من أحجام المعاينة المتوافقة لضمان عدم اقتصاص مجال الرؤية
بشكل غير ملائم.
الطريقة
يُسجِّل الاختبار فيديوهَين، أحدهما مع تفعيل ميزة "تثبيت الصورة أثناء المعاينة" والآخر مع إيقافها. ويتم اختيار إطار تمثيلي من كل فيديو، ويتم تحليله للتأكّد من أنّ التغييرات في مجال الرؤية في الفيديوهَين تتمثّل ضمن المواصفات.
على وجه التحديد، يتحقّق الاختبار من المَعلمات التالية مع تفعيل ميزة "تثبيت المعاينة" أو بدون تفعيلها:
- يبقى استدارة الدائرة ثابتة.
- يظل مركز الدائرة ثابتًا.
- لا يتغيّر حجم الدائرة بأكثر من %20، ما يعني أنّ مجال الرؤية يتغيّر بنسبة %20 بحد أقصى.
scene4/test_video_aspect_ratio_and_crop.py
يضيف Android 13 test_video_aspect_ratio_and_crop
الاختبار. على غرار test_aspect_ratio_and_crop
اختبار الصور الثابتة، يتحقّق هذا الاختبار من تنسيقات الفيديو المتوافقة
لضمان عدم تمديد إطارات الفيديو أو اقتصاصها بشكل غير ملائم.
يتم اختبار جميع جودة الفيديو التي يتم الإبلاغ عنها ذاتيًا. بالإضافة إلى ذلك، إذا كانت
الكاميرا تتيح تسجيل فيديوهات بدقة HLG10
، يتم اختبار فيديوهات بدقة 10 بت.
يضيف Android 13 طريقة get_available_video_qualities
إلى its_session_utils
. لمشاركة الرمز البرمجي المشترَك
مع الاختبارات الحالية، يتضمّن Android 13 أيضًا دالتَي image_fov_utils
وvideo_processing_utils
الجديدتَين.
الطريقة
يُسجِّل الاختبار صورة مرجعية بتنسيق RAW أو بتنسيق JPEG بأعلى دقة ممكنة إذا لم يكن تنسيق RAW متوافقًا. من الصورة المرجعية، يتم تحديد حجم الدائرة وموقعها. يتم بعد ذلك التقاط فيديوهات قصيرة بكل مستويات الجودة المتاحة. يتم استخراج اللقطة المرجعية النهائية من كل جودة فيديو. من الإطار المرجعي، يتم احتساب مجال الرؤية (FoV) والمركز (اقتصاص) ونسبة العرض إلى الارتفاع لكل جودة فيديو.
لاحتساب مجال العرض، يقارن الاختبار حجم دائرة إطار الفيديو بحجم الدائرة المحسوب من الصورة المرجعية وأحجام تنسيقات الفيديو. للتحقّق من الاقتصاص، يقارن الاختبار مركز إطار الفيديو بمركز الصورة المرجعية. للتحقّق من نسبة العرض إلى الارتفاع، يستخدم الاختبار المشهد الذي يمثّل دائرة سوداء كبيرة على خلفية بيضاء، ويحدّد نسبة العرض إلى الارتفاع للدائرة ويتأكّد من أنّ اللقطة ليست مشوّهة.
sensor_fusion/test_preview_stabilization.py
يضيف نظام Android 13 اختبار test_preview_stabilization
،
الذي يختبر جميع درجات جودة المعاينة المتوافقة حتى 1920×1080. يستخدم الاختبار
منصة اختبار دمج البيانات من مختلف الحساسات ويتطلب
استخدام وحدة التحكّم الجديدة في الإصدار 2 من دمج البيانات من مختلف الحساسات أو ترقية البرامج الثابتة لإصدارات Arduino السابقة من وحدة التحكّم. لمزيد من التفاصيل حول وحدة التحكّم الجديدة،
يُرجى الاطّلاع على تعديلات الأجهزة وإضافاتها.
الطريقة
يتم تحريك الهاتف ببطء بزاوية 15 درجة تقريبًا مع تفعيل ميزة معاينة التثبيت. بعد ذلك، تتم مقارنة دوران الصور بالدوران في أداة الاستشعار الدوراني.
sensor_fusion/test_video_stabilization.py
يضيف نظام Android 13 اختبار test_video_stabilization
،
الذي يختبر جودة الفيديوهات المتوافقة حتى 1920×1080. يتم استبعاد الفيديوهات ذات الدقة المنخفضة بتنسيق QCIF. يستخدم الاختبار منصة اختبار
دمج الاستشعار ويتطلب
استخدام وحدة التحكّم الجديدة في الإصدار 2 من دمج الاستشعار أو ترقية البرامج الثابتة ل
إصدارات وحدة تحكّم Arduino السابقة. لمزيد من التفاصيل حول وحدة التحكّم الجديدة،
يُرجى الاطّلاع على تعديلات الأجهزة وإضافاتها.
الطريقة
يحرك جهاز الاختبار الهاتف ببطء بزاوية 15 درجة تقريبًا مع تفعيل ميزة تثبيت المعاينة. بعد ذلك، تتم مقارنة دوران الصور بدوران أداة الاستشعار الدوراني.
تحديثات الأجهزة وإضافاتها
يتضمّن نظام التشغيل Android 13 ترقية إلى الإصدار 2 من وحدة التحكّم في دمج البيانات من مختلف الحساسات المستندة إلى Arduino. تتضمّن هذه الترقية تغييرات على الأجهزة والبرامج الثابتة. تتيح الترقية لجهاز التحكّم ضبط سرعة الدوران والتحكّم في الإضاءة. تتضمّن الترقية أيضًا درعًا جديدًا (كما هو موضّح في الشكل 1)، والذي يقدّم ثلاث قنوات ل التناوب وثلاث قنوات للتحكّم في الإضاءة.
الشكل 1: لوحة Arduino shield rev2.0 مع التحكّم في الإضاءة والدوران
بالإضافة إلى ذلك، بالنسبة إلى الإصدار 13، يجب تحديث البرامج الثابتة لأجهزة التحكّم الحالية لتفعيل التحكّم في سرعة الدوران. يمكن تنزيل هذا الإصدار من البرامج الثابتة من:
لمزيد من المعلومات عن وحدة التحكّم الجديدة، يُرجى الاطّلاع على مقالة وحدة التحكّم في دمج بيانات المستشعرات في Android 13.
دعم الاختبار على الأجهزة القابلة للطي
يتيح نظام Android 13 اختبار التطبيقات على الأجهزة القابلة للطي. لتفعيل واجهة برمجة تطبيقات كاميرا متعددة في الأجهزة القابلة للطي، يجب ضبط حالة الهاتف (Folded
أو Unfolded
) أثناء الاختبار.
لتفعيل الاستطلاع عن حالة الهاتف لجميع الأجهزة الاختبارية، بما في ذلك
الهواتف غير القابلة للطي، يمكنك تنفيذ الأمر adb التالي بعد توصيل الجهاز الاختباري بالمضيف.
adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier