Halaman ini mencantumkan semua pengujian yang tersedia untuk mengevaluasi hardware abstraction layer (HAL) kamera Android. Tujuannya adalah untuk produsen peralatan asli (OEM) dan vendor prosesor aplikasi (AP) agar mereka dapat memastikan penerapan HAL kamera yang tepat dengan kerusakan minimal. Meskipun ini adalah tambahan sukarela pada Android Compatibility Test Suite (CTS), hal 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 (HAL) 3 hardware kamera Android dengan benar. Jika sesuai dengan semua item dalam
daftar periksa, implementasi perangkat dapat dianggap lengkap sehubungan
dengan antarmuka Android Camera HAL. Hal ini pada gilirannya akan memungkinkan perangkat
mendukung dengan benar paket
android.hardware.camera2
yang
dibangun oleh aplikasi kamera.
Spesifikasi HAL3 Kamera
Spesifikasi Android Camera HAL3 adalah sumber informasi resmi tentang perangkat yang harus memenuhi persyaratan. Halaman ini memberikan ringkasan semua pengujian yang dapat digunakan sebagai checklist. Penerapan Camera HAL (misalnya, vendor AP) harus mempelajari spesifikasi Camera HAL3 baris demi baris dan memastikan perangkat mereka mematuhinya.
Spesifikasi HAL saat ini ditentukan dalam file ini di dalam Android 5.0 dan PDK Pengembangan Platform Android (PDK) generik yang lebih baru:
- Spesifikasi dan antarmuka Camera HAL 3.x:
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- Spesifikasi metadata Camera HAL 3.x:
system/media/camera/docs/docs.html
- Spesifikasi dan antarmuka format piksel HAL:
system/core/libsystem/include/system/graphics.h
Jenis pengujian kamera
Berikut adalah jenis pengujian utama yang tersedia untuk kamera Android terbaru beserta referensi ke petunjuk terkait di bawah:
- Vendor Test Suite (VTS): Pengujian yang langsung menguji antarmuka HAL kamera
- Compatibility Test Suite (CTS): Pengujian Android standar dan otomatis untuk memastikan kompatibilitas perangkat. Untuk mengetahui detail selengkapnya, lihat Compatibility Test Suite dan Ringkasan Trade Federation.
- Image Test Suite (ITS): Jalankan pengujian secara manual untuk memastikan kebenaran gambar. Untuk mengetahui detail selengkapnya, lihat ITS Kamera.
- Pengujian Manual Pengujian Cam:
Jalankan dari sumber di
pdk/apps/TestingCamera/
- Pengujian ManualCam2.1
tests: Jalankan dari sumber di
pdk/apps/TestingCamera2/
Semua jenis pengujian ini dijelaskan secara mendetail di bawah. Pengujian ini disajikan dalam urutan kronologis yang diharapkan untuk dijalankan oleh OEM.
Misalnya, jika perangkat gagal dalam pengujian native, perangkat tersebut pasti akan gagal dalam pengujian Compatibility Test Suite (CTS) berikutnya. Jika perangkat gagal CTS, tidak ada gunanya melanjutkan ke Image Test Suite (ITS). Sebaiknya atasi 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 di tingkat antarmuka HIDL. Untuk mengetahui informasi selengkapnya tentang penggunaan VTS, lihat Vendor Test Suite.
Pengujian Compatibility Test Suite (CTS)
Pengujian Camera Android Compatibility Test Suite (CTS) berfokus pada kompatibilitas perangkat. Untuk mengetahui informasi tentang cara menyiapkan lingkungan pengujian, lihat Menyiapkan CTS.
Jalur awal untuk pengujian CTS kamera adalah: platform/cts
.
Saat menjalankan CTS kamera untuk perangkat yang mendukung kamera eksternal (seperti webcam USB), Anda harus mencolokkan perangkat saat menjalankan CTS atau pengujian akan otomatis gagal. Contoh kamera eksternal mencakup: Logitech HD Pro Webcam C920 dan Microsoft LifeCam HD-3000.
Lihat pengantar CTS dan sub-halamannya untuk mengetahui petunjuk umum tentang cara menjalankan CTS.
Pengujian CTS untuk
API android.hardware.Camera
Temukan pengujian kamera ini di bagian 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
API android.hardware.camera2
Temukan pengujian kamera ini di bagian cts/tests/tests/
:
hardware/src/android/hardware/camera2/cts/*
permission/src/android/permission/cts/Camera2PermissionTest.java
Uji kamera CTS Verifier
Temukan pengujian kamera ini di bagian:
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 pengujian ITS Kamera berada di direktori
cts/apps/CameraITS
.
Setiap pengujian berada di subdirektori tests/scene#
.
Untuk mengetahui informasi selengkapnya tentang cara menyiapkan dan menjalankan pengujian, lihat ITS Kamera.
Untuk deskripsi adegan dan pengujian, lihat Pengujian ITS Kamera.
Pengujian ITS lulus atau gagal. Semua pengujian wajib dalam setiap folder adegan harus lulus.
Pengujian yang tidak diwajibkan dapat gagal dan tetap dihitung sebagai lulus di
CtsVerifier
.
Pengujian ITS menguji skenario pengujian yang tidak diuji di CTS dan merupakan komponen penting dari rencana pengujian HAL 3.2.
Pengujian Media Framework
Lulus semua pengujian media terkait kamera di MediaFrameworkTest. Perhatikan, pengujian ini memerlukan penginstalan mediaframeworktest.apk di perangkat Android. Anda harus make mediaframeworktest
, lalu menggunakan adb
untuk menginstal .apk yang dihasilkan. Contoh perintah disertakan di bawah.
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
Dengan variabel name mewakili direktori yang berisi produk vendor.
Temukan semua pengujian di direktori berikut atau subdirektorinya:
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
Setiap subdirektori mewakili class pengujian:
functional/
integration/
performance/
power/
stress/
unit/
Menjalankan pengujian Media Framework
Untuk melihat semua pengujian yang tersedia::
adb shell pm list instrumentation
Tindakan 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 ini terdiri dari nama paket target
(com.android.mediaframeworktest
) dan nama test runner
(MediaFramework
).
Sebagai contoh:
com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner com.android.mediaframeworktest/.MediaRecorderStressTestRunner com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
Kemudian, Anda dapat meneruskan setiap komponen ke adb shell am instrument
seperti
ini:
adb shell am instrument -w component.name
Dengan component.name
sama dengan nilai yang diekstrak
di atas. Contoh:
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Perhatikan bahwa meskipun jalur class adalah nama class + paket Java, paket instrumentasi tidak harus sama dengan paket Java. Pastikan Anda menggunakan paket AndroidManifest.xml saat menggabungkan nama komponen, bukan paket Java tempat class test runner berada.
Untuk menjalankan satu class pengujian, teruskan argumen -e class
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Untuk menjalankan hanya satu metode dalam class pengujian, tambahkan tanda pound (#) dan
nama metode (dalam hal ini, testConnectPro
) ke nama class, seperti berikut:
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Pengujian fungsional setelan media
Berikut adalah contoh menjalankan pengujian fungsional. Pengujian ini memverifikasi fungsi dasar berbagai kombinasi setelan 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
Pengujian integrasi media
Berikut adalah contoh menjalankan pengujian 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, output yang dihasilkan akan terlihat seperti:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
Pengujian performa media
Tes memori pratinjau ini akan membuka dan melepaskan pratinjau kamera sebanyak 200 kali. Dalam setiap 20 iterasi, snapshot ps mediaserver akan direkam dan akan membandingkan penggunaan memori yang berbeda setelah 200 iterasi. Pengujian akan gagal jika selisihnya lebih dari 150 km.
Jalankan perintah pengujian:
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
Output yang lebih mendetail dapat ditemukan di:
/sdcard/mediaMemOutput.txt
Pengujian 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'
Stress test media
Pengujian ini bertujuan untuk menguji pengambilan gambar dan perekaman video kamera.
Jalankan perintah pengujian:
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
Semua pengujian harus berhasil.
Pengujian ManualPengujian Cam
Aplikasi TestingCam harus dijalankan secara manual dengan pemeriksaan berikut dilakukan.
Sumber untuk TestingCam ada di sini: pdk/apps/TestingCamera/
Fokus tak terhingga dengan kemiringan kamera
Mulai TestingCam, aktifkan pratinjau, dan pastikan mode fokus otomatis disetel ke tak terhingga. Dengan menggunakan tombol Ambil gambar, ambil gambar subjek yang jauh (setidaknya berjarak 10 m) dengan kamera yang diarahkan secara horizontal, ke atas (mendekati vertikal), dan ke bawah (mendekati vertikal); contoh gambar yang diambil ke atas adalah daun/ranting tinggi pohon dari bawah dan contoh gambar yang diambil ke bawah adalah jalan yang terlihat dari atap bangunan. Dalam semua kasus, subjek yang jauh harus tajam dan fokus. Simpan dan lihat hasil foto dalam tampilan galeri sehingga Anda dapat memperbesar dan memeriksa ketajaman dengan lebih mudah.
Perhatikan bahwa agar kamera dengan aktuator VCM lulus pengujian ini, kamera tersebut memerlukan sistem kontrol AF loop tertutup, atau memerlukan koreksi SW berdasarkan penggunaan data akselerometer untuk menentukan orientasi kamera. Kalibrasi pabrik yang andal untuk posisi tak terhingga lensa juga akan diperlukan.
Pengujian ManualPengujian Cam2
Aplikasi TestingCam2 harus dijalankan secara manual, dengan pemeriksaan berikut dilakukan. Sumber untuk TestingCam2 ada di sini: pdk/apps/TestingCamera2/
Pengambilan gambar JPEG
Mulai TestingCam2, lalu tekan tombol JPEG. Gambar yang muncul di sebelah kanan gambar jendela bidik harus terlihat sama dengan jendela bidik, termasuk memiliki orientasi yang sama.