Dokumen ini mencantumkan semua pengujian yang tersedia untuk mengevaluasi lapisan abstraksi perangkat keras (HAL) kamera Android. Ini ditujukan untuk produsen peralatan asli (OEM) dan vendor pengolah 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 jangkauan pengujian kamera dan tentunya akan mengidentifikasi potensi bug.
Dengan lulus pengujian ini, OEM memvalidasi apakah mereka telah mengintegrasikan dengan benar antarmuka lapisan abstraksi perangkat keras (HAL) 3 kamera Android. Saat menyesuaikan dengan semua item dalam daftar periksa, implementasi perangkat dapat dianggap penuh sehubungan dengan antarmuka Android Camera HAL. Hal ini pada gilirannya akan mengaktifkan perangkat untuk mendukung dengan benar paket android.hardware.camera2
yang dibuat oleh aplikasi kamera.
Spesifikasi kamera HAL3
Spesifikasi Android Camera HAL3 adalah sumber informasi resmi tentang perangkat apa yang harus dipenuhi; halaman ini memberikan ringkasan dari semua tes yang dapat digunakan sebagai daftar periksa. Pelaksana Camera HAL (misalnya vendor AP) harus melalui spesifikasi Camera HAL3 baris demi baris dan memastikan perangkat mereka sesuai dengan spesifikasi tersebut.
Spesifikasi HAL saat ini ditentukan dalam file berikut dalam Android 5.0 dan Android Platform Development Kit (PDK) generik yang lebih baru:
- Antarmuka dan spesifikasi kamera HAL 3.x :
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- Spesifikasi metadata Kamera HAL 3.x :
system/media/camera/docs/docs.html
- Antarmuka dan spesifikasi format piksel HAL :
system/core/libsystem/include/system/graphics.h
Jenis tes kamera
Berikut adalah jenis pengujian utama yang tersedia untuk kamera Android terbaru beserta referensi petunjuk terkait di bawah ini:
- Vendor Test Suite (VTS) : Tes yang secara langsung menguji antarmuka HAL kamera
- Compatibility Test Suite (CTS) : Pengujian Android standar dan otomatis untuk memastikan kompatibilitas perangkat. Untuk detail lebih lanjut, lihat Rangkaian Tes Kompatibilitas dan Ikhtisar Federasi Perdagangan .
- Image Test Suite (ITS) : Jalankan pengujian secara manual untuk memastikan kebenaran gambar. Untuk detail lebih lanjut, lihat Kamera ITS .
- Tes TestingCam Manual : Jalankan dari sumber di
pdk/apps/TestingCamera/
- Pengujian Manual TestingCam2.1 : Jalankan dari sumber di
pdk/apps/TestingCamera2/
Semua jenis tes ini dijelaskan secara rinci di bawah ini. Tes-tes ini disajikan dalam urutan kronologis di mana OEM diharapkan untuk melaksanakannya.
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 merekomendasikan mengatasi kegagalan di setiap jenis pengujian sebelum melanjutkan ke rangkaian pengujian berikutnya.
Pengujian Vendor Test Suite (VTS).
Android Vendor Test Suite (VTS) adalah rangkaian pengujian yang berfungsi pada level antarmuka HIDL. Untuk informasi selengkapnya tentang penggunaan VTS, lihat Vendor Test Suite .
Tes Kompatibilitas Test Suite (CTS).
Pengujian Camera Android Compatibility Test Suite (CTS) berfokus pada kompatibilitas perangkat. Untuk informasi tentang menyiapkan lingkungan pengujian, lihat Menyiapkan CTS .
Jalur awal untuk tes kamera 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 antara lain: Logitech HD Pro Webcam C920 dan Microsoft LifeCam HD-3000 .
Lihat pengantar CTS dan subhalamannya untuk petunjuk umum menjalankan CTS.
Pengujian CTS untuk android.hardware.Camera
API
Temukan 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
Pengujian CTS untuk android.hardware.camera2
API
Temukan tes kamera ini di bawah cts/tests/tests/
:
-
hardware/src/android/hardware/camera2/cts/*
-
permission/src/android/permission/cts/Camera2PermissionTest.java
Tes kamera Pemverifikasi CTS
Temukan tes kamera ini di bawah: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*
Pengujian Image Test Suite (ITS).
Pengujian Camera Image Test Suite (ITS) berfokus pada kebenaran gambar. Untuk melakukan pengujian, jalankan skrip Python di workstation dengan perangkat Android yang terhubung melalui USB.
Infrastruktur dan tes Kamera ITS terletak di direktori cts/apps/CameraITS
. Setiap tes berada di subdirektori tests/scene #
.
Untuk informasi selengkapnya tentang cara menyiapkan dan menjalankan pengujian, lihat Kamera ITS .
Untuk deskripsi adegan dan pengujian, lihat Tes Kamera ITS .
Tes ITS lulus atau gagal. Semua tes yang diamanatkan di setiap folder adegan harus lulus. Tes yang tidak diamanatkan bisa gagal dan tetap dihitung sebagai kelulusan di CtsVerifier
.
ITS menguji skenario pengujian yang tidak diuji dalam CTS dan merupakan komponen penting dari rencana pengujian HAL 3.2.
Tes Kerangka Media
Lulus semua tes media terkait kamera di MediaFrameworkTest. Harap diperhatikan, pengujian ini mengharuskan mediaframeworktest.apk diinstal di perangkat Android. Anda harus make mediaframeworktest
dan kemudian menggunakan adb untuk menginstal .apk yang dihasilkan. Contoh perintah disertakan di bawah ini.
Jalur awal untuk pengujian framework media terkait Kamera adalah: platform/frameworks/base
Temukan kode sumber untuk pengujian di sini: frameworks/base/media/tests/MediaFrameworkTest
Untuk menyiapkan pengujian ini:
make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk
Di mana variabel name mewakili 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 Media Framework
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)
Identifikasi dan ekstrak komponen (antara instrumentation:
dan (target=com.android.mediaframeworktest)
dari setiap baris pengujian. Komponen terdiri dari nama paket target ( com.android.mediaframeworktest
) dan nama runner pengujian ( MediaFramework TestRunner
MediaFramework TestRunner
).
Contohnya:
com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner com.android.mediaframeworktest/.MediaRecorderStressTestRunner com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
Anda kemudian dapat meneruskan setiap komponen ke adb shell am instrument
seperti:
adb shell am instrument -w component.name
Di mana component.name
sama dengan nilai yang diekstraksi di atas. Misalnya:
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Harap diperhatikan, meskipun jalur kelas adalah paket Java + nama kelas, paket instrumentasi belum tentu sama dengan paket Java. Pastikan Anda menggunakan paket AndroidManifest.xml saat menggabungkan nama komponen, bukan paket Java tempat kelas runner pengujian berada.
Untuk menjalankan satu kelas pengujian, lewati kelas -e
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Untuk menjalankan hanya satu metode dalam kelas pengujian, tambahkan tanda pound (#) dan nama metode (dalam hal ini, testConnectPro
) ke 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 tes:
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 seperti:
----- 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 merilis pratinjau kamera sebanyak 200 kali. Dalam setiap 20 iterasi, snapshot dari ps mediaserver akan direkam dan akan dibandingkan perbedaan penggunaan memori setelah 200 iterasi. Tes akan gagal Jika perbedaannya lebih besar dari 150kM.
Jalankan perintah tes:
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
Output yang lebih rinci dapat ditemukan di: /sdcard/mediaMemOutput.txt
Tes unit media
Perintah untuk menjalankan pengujian 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 menekankan pengambilan gambar kamera dan perekaman video.
Jalankan perintah tes:
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
Semua tes harus lulus.
Tes TestingCam Manual
Aplikasi TestingCam harus dijalankan secara manual dengan pemeriksaan berikut dilakukan. Sumber TestingCam ada di sini: pdk/apps/TestingCamera/
Fokus tanpa batas dengan kemiringan kamera
Mulai TestingCam, aktifkan pratinjau, dan pastikan mode fokus otomatis disetel ke tak terhingga. Dengan menggunakan tombol Ambil gambar , ambil bidikan subjek yang jauh (setidaknya berjarak 10m) dengan kamera diarahkan secara horizontal, ke atas (mendekati vertikal), dan ke bawah (mendekati vertikal); contoh bidikan ke atas adalah daun/cabang pohon yang tinggi dari bawah dan contoh bidikan ke bawah adalah jalan yang terlihat dari atap bangunan. Dalam semua kasus, subjek yang jauh harus tajam dan fokus. Simpan dan lihat hasil jepretan dalam tampilan galeri sehingga Anda dapat memperbesar dan memeriksa ketajaman dengan lebih mudah.
Perhatikan bahwa agar kamera dengan aktuator VCM lulus tes ini, diperlukan sistem kontrol AF loop tertutup, atau memerlukan semacam koreksi SW berdasarkan penggunaan data akselerometer untuk menentukan orientasi kamera. Kalibrasi pabrik yang andal dari posisi tak terhingga lensa juga akan diperlukan.
Pengujian Manual Tes Cam2
Aplikasi TestingCam2 harus dijalankan secara manual, dengan pemeriksaan berikut dilakukan. Sumber TestingCam2 ada di sini: pdk/apps/TestingCamera2/
tangkapan JPEG
Mulai TestingCam2, dan tekan tombol JPEG . Gambar yang muncul di sebelah kanan gambar jendela bidik harus tampak sama dengan jendela bidik, termasuk memiliki orientasi yang sama.