Checklist pengujian HAL Kamera

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:

Jenis pengujian kamera

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

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

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 class -e, seperti jadi:

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.