Daftar periksa pengujian HAL kamera

Halaman ini mencantumkan semua pengujian yang tersedia untuk mengevaluasi lapisan abstraksi perangkat keras (HAL) kamera Android. Hal ini ditujukan untuk produsen peralatan asli (OEM) dan vendor prosesor aplikasi (AP) sehingga mereka dapat memastikan implementasi HAL kamera yang tepat dengan cacat minimum. Meskipun ini merupakan tambahan sukarela pada Compatibility Test Suite (CTS) Android, ini sangat meningkatkan cakupan pengujian kamera dan tentunya 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. Jika mematuhi semua item dalam daftar periksa, implementasi perangkat dapat dianggap lengkap sehubungan dengan antarmuka HAL Kamera Android. Hal ini pada gilirannya akan memungkinkan perangkat untuk mendukung paket android.hardware.camera2 yang digunakan untuk membuat aplikasi kamera.

Spesifikasi kamera HAL3

Spesifikasi Android Camera HAL3 adalah sumber informasi resmi tentang perangkat apa yang harus dipenuhi; halaman ini memberikan ringkasan semua tes yang dapat digunakan sebagai daftar periksa. Pelaksana Kamera HAL (misalnya vendor AP) harus mempelajari spesifikasi Kamera HAL3 baris demi baris dan memastikan perangkat mereka mematuhinya.

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

Jenis pengujian kamera

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

Semua jenis tes ini dijelaskan secara rinci di bawah. Pengujian ini disajikan dalam urutan kronologis yang diharapkan akan dilaksanakan oleh OEM.

Misalnya, jika perangkat gagal dalam pengujian asli, perangkat tersebut pasti akan gagal dalam pengujian Compatibility Test Suite (CTS) berikutnya. Dan jika perangkat gagal dalam CTS, tidak ada gunanya melanjutkan ke Image Test Suite (ITS). Kami merekomendasikan 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 bekerja pada tingkat antarmuka HIDL. Untuk informasi lebih lanjut tentang penggunaan VTS, lihat Vendor Test Suite .

Tes Rangkaian Tes Kompatibilitas (CTS).

Tes Kamera Android Compatibility Test Suite (CTS) berfokus pada kompatibilitas perangkat. Untuk informasi tentang 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), perangkat Anda harus tersambung 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 pendahuluan CTS dan subhalamannya untuk instruksi umum dalam menjalankan CTS.

Tes 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

Tes CTS untuk API android.hardware.camera2

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

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

Tes kamera CTS Verifikator

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

Tes Gambar Test Suite (ITS).

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

Infrastruktur dan pengujian Camera ITS terletak di direktori cts/apps/CameraITS . Tiap pengujian berada di subdirektori tests/scene # .

Untuk informasi lebih lanjut tentang cara mengatur dan menjalankan pengujian, lihat Kamera ITS .

Untuk deskripsi adegan dan tes, 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 masih dihitung sebagai kelulusan di CtsVerifier .

Skenario pengujian pengujian ITS 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 dicatat, tes ini memerlukan mediaframeworktest.apk diinstal pada perangkat Android. Anda perlu 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

Dimana 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 pengujian:

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

Jalankan pengujian 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 tersebut 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

Dimana 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 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 pengujian, tambahkan tanda pagar (#) 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 pelaksanaan uji 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 pelaksanaan 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 maka akan dihasilkan output seperti ini:

-----

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 server media ps akan direkam dan akan membandingkan penggunaan memori yang berbeda 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 lebih detail 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 untuk 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 melakukan pemeriksaan berikut. Sumber TestingCam ada di sini: pdk/apps/TestingCamera/

Fokus tanpa batas dengan kemiringan kamera

Mulai TestingCam, aktifkan pratinjau, dan pastikan mode fokus otomatis diatur ke tak terbatas. Menggunakan tombol Ambil gambar , ambil gambar subjek yang jauh (setidaknya berjarak 10m) dengan kamera mengarah secara horizontal, ke atas (mendekati vertikal), dan ke bawah (mendekati vertikal); contoh bidikan ke atas dapat berupa daun/ranting pohon yang tinggi dari bawah dan contoh bidikan ke bawah dapat berupa jalan jika dilihat dari atap suatu 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 dapat lulus pengujian ini, diperlukan sistem kontrol AF loop tertutup, atau memerlukan semacam koreksi SW berdasarkan penggunaan data akselerometer untuk menentukan orientasi kamera. Kalibrasi pabrik yang andal untuk posisi tak terhingga lensa juga diperlukan.

Tes Manual TestingCam2

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

pengambilan JPEG

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