Halaman ini mencantumkan semua pengujian yang tersedia untuk mengevaluasi lapisan abstraksi hardware (HAL) kamera Android. API ini ditujukan untuk produsen peralatan asli (OEM) dan vendor pemroses aplikasi (AP) sehingga mereka dapat memastikan penerapan HAL kamera yang tepat dengan cacat minimum. Meskipun ini adalah penambahan sukarela ke 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 hardware
kamera Android (HAL) 3 dengan benar. Jika sesuai dengan semua item dalam checklist, implementasi perangkat dapat dianggap lengkap sehubungan dengan antarmuka Android Camera HAL. Hal ini akan memungkinkan perangkat
mendukung paket
android.hardware.camera2
yang
digunakan aplikasi kamera.
Spesifikasi Camera HAL3
Spesifikasi Android Camera HAL3 adalah sumber informasi resmi tentang apa saja yang harus dipenuhi perangkat; halaman ini menyediakan ringkasan semua pengujian yang dapat digunakan sebagai checklist. Pengimplementasi Camera HAL (misalnya vendor AP) harus menelusuri spesifikasi Camera HAL3 baris demi baris dan memastikan perangkat mereka sesuai dengan spesifikasi tersebut.
Spesifikasi HAL saat ini ditentukan dalam file ini dalam Android 5.0 dan Android Platform Development Kit (PDK) generik yang lebih baru:
- Antarmuka dan spesifikasi 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
- Antarmuka dan spesifikasi format piksel HAL:
system/core/libsystem/include/system/graphics.h
Jenis pengujian kamera
Berikut adalah jenis pengujian utama yang tersedia untuk kamera Android terbaru bersama dengan referensi ke petunjuk terkait di bawah:
- Vendor Test Suite (VTS): Pengujian yang langsung menguji antarmuka HAL kamera
- Compatibility Test Suite (CTS): Pengujian Android standar 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 ketepatan gambar. Untuk mengetahui detail selengkapnya, lihat ITS Kamera.
- Pengujian TestingCam Manual:
Jalankan dari sumber di
pdk/apps/TestingCamera/
- Pengujian Manual TestingCam2.1: Jalankan dari sumber di
pdk/apps/TestingCamera2/
Semua jenis pengujian ini dijelaskan secara mendetail di bawah. Pengujian ini ditampilkan dalam urutan kronologis yang diharapkan OEM untuk menjalankannya.
Misalnya, jika perangkat gagal dalam pengujian native, perangkat pasti akan gagal dalam pengujian Compatibility Test Suite (CTS) berikutnya. Selain itu, jika perangkat gagal dalam CTS, tidak ada gunanya melanjutkan ke Image Test Suite (ITS). Sebaiknya atasi kegagalan di setiap jenis pengujian sebelum melanjutkan ke kumpulan pengujian berikutnya.
Pengujian Vendor Test Suite (VTS)
Android Vendor Test Suite (VTS) adalah suite pengujian yang berfungsi pada level antarmuka HIDL. Untuk informasi selengkapnya tentang penggunaan VTS, lihat Vendor Test Suite.
Pengujian Compatibility Test Suite (CTS)
Pengujian Compatibility Test Suite (CTS) Android Kamera berfokus pada kompatibilitas perangkat. Untuk 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 meliputi: Logitech HD Pro Webcam C920 dan Microsoft LifeCam HD-3000.
Lihat pengantar CTS dan subhalamannya untuk mendapatkan petunjuk umum tentang menjalankan CTS.
Pengujian CTS untuk
android.hardware.Camera
API
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
android.hardware.camera2
API
Temukan pengujian kamera ini di bagian cts/tests/tests/
:
hardware/src/android/hardware/camera2/cts/*
permission/src/android/permission/cts/Camera2PermissionTest.java
Pengujian 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 terletak di
direktori
cts/apps/CameraITS
.
Setiap pengujian berada di subdirektori tests/scene#
.
Untuk informasi selengkapnya tentang cara menyiapkan dan menjalankan pengujian, lihat ITS Kamera.
Untuk deskripsi scene dan pengujian, lihat Pengujian ITS Kamera.
Pengujian ITS lulus atau gagal. Semua pengujian yang diwajibkan di setiap folder scene harus lulus.
Pengujian yang tidak diwajibkan dapat gagal dan masih dihitung sebagai lulus di
CtsVerifier
.
ITS menguji skenario pengujian yang tidak diuji di CTS dan merupakan komponen penting dari rencana pengujian HAL 3.2.
Pengujian Framework Media
Lulus semua pengujian media terkait kamera di MediaFrameworkTest. Perhatikan
bahwa pengujian ini memerlukan mediaframeworktest.apk yang diinstal di perangkat
Android. Anda harus melakukan 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 Framework Media
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 runner pengujian
(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
berikut:
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 paket Java + nama class, paket instrumentasi tidak harus sama dengan paket Java. Pastikan Anda menggunakan paket AndroidManifest.xml saat menyambungkan nama komponen, bukan paket Java tempat class runner pengujian berada.
Untuk menjalankan satu class pengujian, teruskan argumen
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Untuk menjalankan satu metode saja dalam class pengujian, tambahkan tanda pound (#) dan
nama metode (dalam hal ini, testConnectPro
) ke nama class, seperti ini:
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Pengujian fungsional setelan media
Berikut adalah contoh pengujian fungsional yang dijalankan. Pengujian ini memverifikasi fungsi dasar dari berbagai kombinasi setelan kamera. (yaitu, Flash, eksposur, WB, scene, 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 operasi 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, tindakan ini akan menghasilkan output yang menyerupai:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
Pengujian performa media
Pengujian memori pratinjau ini akan membuka dan merilis pratinjau kamera sebanyak 200 kali. Dalam setiap 20 iterasi, snapshot mediaserver ps akan direkam dan akan membandingkan penggunaan memori yang berbeda setelah 200 iterasi. Pengujian akan gagal jika perbedaannya 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'
Pengujian stres 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 seharusnya berhasil.
Pengujian TestingCam manual
Aplikasi TestingCam harus dijalankan secara manual dengan pemeriksaan berikut dilakukan.
Sumber untuk TestingCam ada di sini: pdk/apps/TestingCamera/
Fokus tak terbatas 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 (minimal 10 m) dengan kamera yang diarahkan secara horizontal, ke atas (mendekati vertikal), dan ke bawah (mendekati vertikal); contoh gambar ke atas dapat berupa daun/ranting pohon yang tinggi dari bawah dan contoh gambar ke bawah dapat berupa jalan yang terlihat dari atap bangunan. Dalam semua kasus, subjek yang jauh harus tajam dan fokus. Simpan dan lihat foto dalam tampilan galeri agar Anda dapat memperbesar dan memeriksa ketajamannya dengan lebih mudah.
Perhatikan bahwa agar kamera dengan aktuator VCM lulus pengujian ini, kamera memerlukan sistem kontrol AF loop tertutup, atau memerlukan semacam koreksi SW berdasarkan penggunaan data akselerometer untuk menentukan orientasi kamera. Kalibrasi pabrik yang andal untuk posisi infinity lensa juga akan diperlukan.
Pengujian Manual TestingCam2
Aplikasi TestingCam2 harus dijalankan secara manual dengan pemeriksaan
berikut yang dilakukan. Sumber untuk TestingCam2 ada di sini: pdk/apps/TestingCamera2/
Pengambilan JPEG
Mulai TestingCam2, lalu tekan tombol JPEG. Gambar yang muncul di sebelah kanan gambar jendela bidik akan terlihat sama dengan jendela bidik, termasuk memiliki orientasi yang sama.