Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Daftar Periksa Pengujian HAL Kamera

Dokumen ini mencantumkan semua pengujian yang tersedia untuk mengevaluasi lapisan abstraksi perangkat keras kamera Android (HAL). Ini ditujukan untuk produsen peralatan asli (OEM) dan vendor prosesor aplikasi (AP) sehingga mereka dapat memastikan penerapan HAL kamera yang tepat dengan cacat minimum. Meskipun ini merupakan tambahan sukarela untuk Android Compatibility Test Suite (CTS), ini sangat meningkatkan cakupan pengujian kamera dan pasti akan mengidentifikasi potensi bug.

Dengan lulus pengujian ini, OEM memvalidasi apakah mereka telah mengintegrasikan antarmuka lapisan abstraksi perangkat keras (HAL) 3 kamera Android dengan benar. Ketika sesuai dengan semua item dalam daftar periksa, implementasi perangkat dapat dianggap penuh sehubungan dengan antarmuka Android Kamera HAL. Ini pada gilirannya memungkinkan perangkat untuk benar mendukung android.hardware.camera2 paket yang kamera aplikasi membangun pada.

Spesifikasi kamera HAL3

The Android Kamera HAL3 spesifikasi adalah sumber otoritatif informasi tentang apa perangkat harus memenuhi; halaman ini memberikan ringkasan semua tes yang dapat digunakan sebagai daftar periksa. Pelaksana HAL Kamera (mis. vendor AP) harus melalui spesifikasi Kamera HAL3 baris demi baris dan memastikan perangkat mereka sesuai dengannya.

Spesifikasi HAL saat ini ditentukan dalam file berikut dalam Android 5.0 dan Android Platform Development Kit (PDK) generik yang lebih baru:

Jenis uji kamera

Berikut adalah jenis pengujian utama yang tersedia untuk kamera Android terbaru bersama dengan referensi ke petunjuk terkait di bawah ini:

Semua jenis tes ini dijelaskan secara rinci di bawah ini. Tes ini disajikan dalam urutan kronologis di mana OEM diharapkan untuk menjalankannya.

Misalnya, jika perangkat gagal dalam pengujian asli, perangkat tersebut pasti akan gagal dalam pengujian Compatibility Test Suite (CTS) berikutnya. Dan jika perangkat gagal CTS, ada sedikit gunanya melanjutkan ke Image Test Suite (ITS). Kami menyarankan untuk mengatasi kegagalan di setiap jenis pengujian sebelum melanjutkan ke rangkaian pengujian berikutnya.

Tes Vendor Test Suite (VTS)

Android Vendor Test Suite (VTS) adalah rangkaian pengujian yang berfungsi pada tingkat antarmuka HIDL. Untuk informasi lebih lanjut tentang menggunakan VTS, lihat Penjual Test Suite .

Tes Kompatibilitas Test Suite (CTS)

Pengujian Kamera Android Compatibility Test Suite (CTS) berfokus pada kompatibilitas perangkat. Untuk informasi tentang pengaturan lingkungan tes, lihat Menyiapkan CTS .

Jalan awal untuk kamera tes CTS adalah: platform/cts .

Saat menjalankan CTS kamera untuk perangkat yang mendukung kamera eksternal (seperti webcam USB), Anda harus memasang perangkat saat menjalankan CTS atau pengujian akan gagal secara otomatis. Contoh kamera eksternal meliputi: Logitech HD Pro Webcam C920 dan Microsoft LifeCam HD-3000 .

Lihat pengenalan CTS dan Subpages untuk petunjuk umum untuk menjalankan CTS.

CTS tes untuk android.hardware.Camera API

Cari tes kamera ini di bawah cts/tests/tests/ :

  • hardware/src/android/hardware/cts/CameraTest.java
  • hardware/src/android/hardware/cts/CameraGLTest.java
  • hardware/src/android/hardware/cts/Camera_SizeTest.java
  • permission/src/android/permission/cts/CameraPermissionTest.java

CTS tes untuk android.hardware.camera2 API

Cari tes kamera ini di bawah cts/tests/tests/ :

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

Tes kamera CTS Verifier

Cari tes kamera ini di bawah: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Tes Gambar Test Suite (ITS)

Kamera Image Test Suite (ITS) menguji fokus pada kebenaran gambar. Untuk melakukan pengujian, jalankan skrip Python di workstation dengan perangkat Android yang terhubung melalui USB.

Kamera infrastruktur dan tes ITS terletak di cts/apps/CameraITS direktori. Setiap Resides tes dalam tests/scene # subdirektori.

Untuk mengatur lingkungan pengujian, jalankan:
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

Untuk informasi lebih lanjut tentang cara mengatur dan menjalankan tes, melihat CameraITS file PDF di cts/apps/CameraITS . Lihat tutorial.py di tests subdirektori untuk panduan tentang cara menggunakan script.

Tes ITS memerlukan lingkungan Linux. Untuk rincian tentang spesifik versi Python yang dibutuhkan untuk menjalankan tes ITS, melihat CameraITS file PDF untuk rilis atau juga catatan Android 12 rilis untuk Android 12.

Penyiapan yang disarankan untuk adegan statis dijelaskan dalam Kamera ITS-in-a-box . Setup direkomendasikan untuk adegan sensor_fusion dijelaskan dalam Sensor Fusion Box Panduan Ringkas .

Untuk menjalankan ITS secara manual, siapkan lingkungan fisik sederhana dengan target spesifik yang dapat digunakan kembali seperti dinding putih, kartu abu-abu, dan lampu meja. Pasang perangkat Android pada tripod dan jalankan skrip untuk menguji fungsi kamera. Sebagian besar tes lulus atau gagal tetapi beberapa menawarkan metrik.

Skenario pengujian skrip ini yang tidak diuji dalam CTS dan merupakan komponen penting dari rencana pengujian HAL 3.2.

Tes ITS lulus atau gagal. Semua tes yang diamanatkan di setiap folder adegan harus lulus. Tes yang tidak diamanatkan bisa gagal dan masih dihitung sebagai lulus di CtsVerifier .

Untuk adegan dan uji deskripsi, lihat Kamera Tes ITS .

Tes Kerangka Media

Lulus semua pengujian media terkait kamera di MediaFrameworkTest. Harap dicatat, tes ini memerlukan mediaframeworktest.apk diinstal pada perangkat Android. Anda akan perlu untuk make mediaframeworktest dan kemudian menggunakan adb untuk menginstal APK yang dihasilkan. Contoh perintah disertakan di bawah ini.

Jalan awal untuk tes kerangka media terkait Kamera adalah: platform/frameworks/base

Menemukan kode sumber untuk tes di sini: frameworks/base/media/tests/MediaFrameworkTest

Untuk menyiapkan tes ini:

make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk

Dimana name variabel merupakan direktori yang berisi produk vendor.

Temukan semua tes di direktori berikut atau subdirektorinya:

frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest

Setiap subdirektori mewakili kelas tes:

  • functional/
  • integration/
  • performance/
  • power/
  • stress/
  • unit/

Menjalankan tes Kerangka Media

Untuk melihat semua tes yang tersedia::

adb shell pm list instrumentation

Ini akan menghasilkan hasil yang menyerupai:

instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
(target=com.android.mediaframeworktest)

Mengidentifikasi dan ekstrak komponen (antara instrumentation: dan (target=com.android.mediaframeworktest) dari setiap baris uji komponen ini terdiri dari nama paket sasaran (. com.android.mediaframeworktest ) dan nama tes pelari ( MediaFramework TestRunner MediaFramework TestRunner ).

Contohnya:

com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner

Anda kemudian dapat melewati setiap komponen untuk adb shell am instrument seperti:

adb shell am instrument -w component.name

Di mana component.name sama dengan nilai diekstrak di atas. Sebagai contoh:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Harap dicatat, sementara jalur kelas adalah paket Java + nama kelas, paket instrumentasi tidak harus sama dengan paket Java. Pastikan Anda menggunakan paket AndroidManifest.xml saat menggabungkan nama komponen, bukan paket Java tempat kelas test runner berada.

Untuk menjalankan satu kelas pengujian, lewati kelas -e argumen, seperti:

adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Untuk menjalankan hanya satu metode dalam kelas tes, append pound (#) tanda dan nama metode (dalam hal ini, testConnectPro ) untuk nama kelas, seperti:

adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Tes fungsional pengaturan media

Berikut adalah contoh menjalankan tes fungsional. Tes ini memverifikasi fungsionalitas dasar dari berbagai kombinasi pengaturan kamera. (yaitu, Flash, eksposur, WB, pemandangan, ukuran gambar, dan geoTag)

Jalankan perintah pengujian:

adb shell am instrument -w -r  -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner

Tes integrasi media

Berikut adalah contoh uji integrasi, dalam hal ini mediaframeworktest/integration/CameraBinderTest.java dan mediaframeworktest/CameraStressTestRunner.java:

adb  shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'

Jika berhasil, ini menghasilkan output yang menyerupai:

-----

com.android.mediaframeworktest.integration.CameraBinderTest:...........
Test results for CameraStressTestRunner=...........
Time: 3.328

OK (11 tests)

-----

Tes kinerja media

Tes memori pratinjau ini akan membuka dan melepaskan pratinjau kamera sebanyak 200 kali. Dalam setiap 20 iterasi, snapshot dari ps mediaserver akan direkam dan akan membandingkan penggunaan memori yang berbeda setelah 200 iterasi. Tes akan gagal Jika perbedaannya lebih besar dari 150kM.

Jalankan perintah pengujian:

adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner

Lebih banyak output rinci dapat ditemukan di: /sdcard/mediaMemOutput.txt

Tes unit media

Perintah untuk menjalankan tes unit semuanya serupa. Misalnya, untuk CameraMetadataTest.java, perintahnya adalah:

adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'

Tes stres media

Tes ini untuk menekankan pengambilan gambar kamera dan perekaman video.

Jalankan perintah pengujian:

adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner

Semua tes harus lulus.

Tes Manual TestingCam

Aplikasi TestingCam harus dijalankan secara manual dengan pemeriksaan berikut dilakukan. Sumber untuk TestingCam di sini: pdk/apps/TestingCamera/

Fokus tak terbatas dengan kemiringan kamera

Mulai TestingCam, aktifkan pratinjau, dan pastikan mode fokus otomatis disetel hingga tak terbatas. Menggunakan tombol gambar Ambil, menangkap gambar dari subjek jauh (setidaknya 10 m pergi) dengan kamera menunjuk horizontal, ke atas (dekat vertikal), dan ke bawah (dekat vertikal); contoh bidikan ke atas bisa berupa daun/cabang pohon yang tinggi dari bawah dan contoh bidikan ke bawah bisa berupa jalan yang terlihat dari atap gedung. Dalam semua kasus, subjek yang jauh harus tajam dan fokus. Simpan dan lihat bidikan dalam tampilan galeri sehingga Anda dapat memperbesar dan memeriksa ketajaman dengan lebih mudah.

Perhatikan bahwa untuk kamera dengan aktuator VCM untuk lulus tes ini, itu akan memerlukan sistem kontrol AF loop tertutup, atau akan memerlukan semacam koreksi SW berdasarkan penggunaan data akselerometer untuk menentukan orientasi kamera. Kalibrasi pabrik yang andal dari posisi lensa tak terhingga juga akan dibutuhkan.

Tes Manual TestingCam2

Aplikasi TestingCam2 harus dijalankan secara manual, dengan pemeriksaan berikut dilakukan. Sumber untuk TestingCam2 di sini: pdk/apps/TestingCamera2/

tangkapan JPEG

Mulai TestingCam2, dan tekan tombol JPEG. Gambar yang muncul di sebelah kanan gambar jendela bidik akan tampak sama dengan jendela bidik, termasuk memiliki orientasi yang sama.