Halaman ini mencantumkan semua pengujian yang tersedia untuk mengevaluasi kamera Android {i>hardware abstraction layer <i}(HAL). Hal ini ditujukan untuk peralatan asli produsen (OEM) dan aplikasi vendor prosesor (AP) sehingga mereka dapat memastikan penerapan kamera yang tepat HAL dengan kerusakan minimum. Meskipun ini adalah tambahan sukarela untuk Android, {i>Compatibility Test Suite<i} (CTS), paket ini sangat meningkatkan cakupan pengujian kamera dan pasti akan mengidentifikasi potensi {i>bug<i}.
Dengan lulus pengujian ini, OEM memvalidasi
apakah mereka telah mengintegrasikan Android
hardware kamera
interface abstraksi layer (HAL) 3. Bila sesuai dengan semua item dalam
penerapan perangkat dapat dianggap lengkap sehubungan dengan
ke antarmuka HAL Kamera Android. Hal ini pada gilirannya akan
memungkinkan perangkat untuk
dengan benar mendukung
android.hardware.camera2
yang
pembuatan aplikasi kamera.
Spesifikasi kamera HAL3
Spesifikasi Android Camera HAL3 adalah sumber otoritatif informasi tentang perangkat apa yang harus dipenuhi; halaman ini memberikan ringkasan dari semua pengujian yang dapat digunakan sebagai checklist. Pengimplementasi HAL Kamera (misalnya, AP vendor) harus memeriksa spesifikasi Kamera HAL3 baris demi baris dan memastikan perangkat mereka sesuai dengan itu.
Spesifikasi HAL saat ini didefinisikan dalam file ini di dalam Android Android Platform Development Kit (PDK) generik 5.0 dan 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
- 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 ini:
- Vendor Test Suite (VTS): Pengujian yang secara langsung menguji antarmuka HAL kamera
- Compatibility Test Suite (CTS): Android standar otomatis pengujian untuk memastikan kompatibilitas perangkat. Untuk detail selengkapnya, lihat Compatibility Test Suite dan Federasi Perdagangan Ringkasan.
- Image Test Suite (ITS): Dijalankan secara manual untuk memastikan ketepatan gambar. Untuk detail selengkapnya, lihat Kamera ITS.
- Pengujian Cam Pengujian Manual:
Menjalankan dari sumber di
pdk/apps/TestingCamera/
- Pengujian ManualCam2.1
pengujian: Menjalankan dari sumber di
pdk/apps/TestingCamera2/
Semua jenis pengujian ini dijelaskan secara mendetail di bawah. Pengujian ini disajikan dalam urutan kronologis di mana OEM diharapkan untuk mengeksekusi mereka.
Misalnya, jika perangkat gagal dalam pengujian native, perangkat itu pasti akan gagal dalam pengujian Compatibility Test Suite (CTS) berikutnya. Dan jika perangkat mengalami kegagalan CTS, hampir tidak ada gunanya melanjutkan ke Image Test Suite (ITS). Saran dari kami menangani kegagalan di setiap jenis pengujian sebelum melanjutkan ke rangkaian pengujian.
Pengujian Vendor Test Suite (VTS)
Android Vendor Test Suite (VTS) adalah rangkaian pengujian yang berfungsi pada Tingkat antarmuka HIDL. Untuk informasi selengkapnya tentang penggunaan VTS, lihat Paket Pengujian Vendor.
Pengujian Compatibility Test Suite (CTS)
Pengujian Compatibility Test Suite (CTS) Kamera Android berfokus pada perangkat kompatibilitas mundur. 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 gagal secara otomatis. Contoh kamera eksternal meliputi: Logitech HD Pro Webcam C920 dan Microsoft LifeCam HD-3000.
Lihat CTS pengantar dan subhalamannya untuk petunjuk umum tentang menjalankan CTS.
Tes 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
Tes 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
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 ketepatan gambar. Untuk melakukan pengujian, jalankan skrip Python di workstation dengan Perangkat Android terhubung melalui USB.
Infrastruktur dan pengujian Camera ITS terletak di
Direktori cts/apps/CameraITS
.
Setiap pengujian berada di subdirektori tests/scene#
.
Untuk informasi selengkapnya tentang cara menyiapkan dan menjalankan pengujian, lihat Kamera ITS.
Untuk deskripsi pengujian dan adegan, lihat Pengujian ITS Kamera.
Pengujian ITS lulus atau gagal. Semua pengujian yang dimandatkan di setiap folder suasana harus lulus.
Pengujian yang tidak diwajibkan dapat gagal dan tetap dianggap berhasil
CtsVerifier
.
Skenario uji ITS yang tidak diuji di CTS dan merupakan komponen rencana pengujian HAL 3.2.
Pengujian Framework Media
Lulus semua pengujian media terkait kamera di MediaFrameworkTest. Memohon
perhatikan, pengujian ini mengharuskan mediaframeworktest.apk diinstal di Android
perangkat seluler. Anda harus melakukan make mediaframeworktest
, lalu 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
Yang mana variabel name merepresentasikan yang berisi produk vendor.
Temukan semua pengujian di direktori berikut atau subdirektorinya:
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
Setiap subdirektori merepresentasikan class pengujian:
functional/
integration/
performance/
power/
stress/
unit/
Menjalankan pengujian Framework Media
Untuk melihat semua pengujian yang tersedia:
adb shell pm list instrumentation
Ini akan memberikan 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
Anda dapat meneruskan setiap komponen ke adb shell am instrument
seperti
jadi:
adb shell am instrument -w component.name
Ketika component.name
sama dengan nilai yang diekstrak
di atas. Contoh:
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Perlu diketahui, meskipun jalur class adalah paket Java + nama class, paket instrumentasi tidak harus sama dengan paket Java. Merek pastikan Anda menggunakan paket AndroidManifest.xml saat menggabungkan komponen nama, bukan paket Java tempat class runner pengujian berada.
Untuk menjalankan satu kelas pengujian, teruskan argumen
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Untuk menjalankan hanya satu metode di class pengujian, tambahkan tanda pagar (#) dan
nama metode (dalam hal ini, testConnectPro
) menjadi 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 ini contoh pengujian fungsional. Pengujian ini memverifikasi bahwa fungsionalitas 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 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, outputnya akan 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 untuk 200 kali. Dalam setiap 20 iterasi, snapshot server media ps akan direkam dan akan membandingkan penggunaan memori yang berbeda setelah 200 iterasi. Pengujian akan gagal jika selisihnya lebih besar 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 menekankan pada 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 pengujian harus lulus.
Pengujian TestingCam manual
Aplikasi TestingCam harus dijalankan secara manual dengan pemeriksaan berikut dilakukan.
Sumber untuk 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. Menggunakan tombol Ambil gambar, ambil foto subjek yang jauh (minimal 10 m) dengan kamera diarahkan secara horizontal, ke atas (mendekati vertikal), dan ke bawah (mendekati vertikal); contoh dari tembakan ke atas bisa berupa daun/cabang pohon yang tinggi dari bawah dan contoh tembakan ke bawah adalah jalan seperti yang terlihat dari atap saat ini. Dalam semua kasus, subjek yang jauh harus tajam dan fokus. Simpan dan melihat foto dalam tampilan galeri sehingga Anda dapat memperbesar dan memeriksa ketajaman lebih mudah.
Perhatikan bahwa agar kamera dengan aktuator VCM dapat lulus pengujian ini, diperlukan baik sistem kontrol AF loop tertutup, atau akan membutuhkan semacam SW koreksi berdasarkan penggunaan data akselerometer untuk menentukan orientasi kamera. Kalibrasi pabrik yang andal untuk posisi lensa tak terhingga juga akan diperlukan.
Pengujian TestingCam2 manual
Aplikasi TestingCam2 harus dijalankan secara manual dengan pemeriksaan berikut
dilaksanakan. 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 orientasi yang sama.