Menguji HAL kamera

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:

Jenis pengujian kamera

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

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 (MediaFrameworkTestRunner).

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 , seperti berikut:

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.