Kamera HAL Testi Kontrol Listesi

Bu belge, Android kamera donanım soyutlama katmanını (HAL) değerlendirmek için mevcut tüm testleri listeler. Orijinal ekipman üreticileri (OEM'ler) ve uygulama işlemcisi (AP) satıcıları için tasarlanmıştır, böylece kamera HAL'sinin minimum kusurla doğru şekilde uygulanmasını sağlayabilirler. Bu, Android Uyumluluk Test Paketine (CTS) gönüllü bir eklenti olmasına rağmen, kamera testi kapsamını büyük ölçüde artırır ve kesinlikle olası hataları tespit eder.

Bu testleri geçerek, OEM'ler Android kamera donanım soyutlama katmanı (HAL) 3 arayüzlerini doğru şekilde entegre edip etmediklerini doğrular. Kontrol listesindeki tüm maddelerle uyumlu olduğunda, bir cihaz uygulamasının Android Kamera HAL arayüzlerine göre tam olduğu düşünülebilir. Bu da, bir cihazın kamera uygulamalarının üzerine inşa ettiği android.hardware.camera2 paketini doğru şekilde desteklemesini sağlayacaktır.

Kamera HAL3 özellikleri

Android Kamera HAL3 spesifikasyonu, hangi cihazların karşılaması gerektiğine dair yetkili bilgi kaynağıdır; bu sayfa, kontrol listesi olarak kullanılabilecek tüm testlerin bir özetini sağlar. Kamera HAL uygulayıcıları (örn. AP satıcıları), Kamera HAL3 spesifikasyonunu satır satır incelemeli ve cihazlarının buna uygun olmasını sağlamalıdır.

Geçerli HAL spesifikasyonu, Android 5.0 ve sonraki genel Android Platform Geliştirme Kiti (PDK) içindeki bu dosyalarda tanımlanmıştır:

Kamera test türleri

Aşağıda, en son Android kamera için kullanılabilen başlıca test türleri ve aşağıdaki ilgili talimatlara referanslar verilmiştir:

Bu test türlerinin tümü aşağıda ayrıntılı olarak açıklanmaktadır. Bu testler, OEM'lerin bunları gerçekleştirmesinin beklendiği kronolojik sırayla sunulur.

Örneğin, bir cihaz yerel testleri geçemezse, sonraki Uyumluluk Test Paketi (CTS) testlerinde kesinlikle başarısız olacaktır. Ve bir cihaz CTS'de başarısız olursa, Image Test Suite'e (ITS) geçmenin pek bir faydası yoktur. Sonraki test grubuna geçmeden önce her test türündeki hataları ele almanızı öneririz.

Satıcı Test Paketi (VTS) testleri

Android Vendor Test Suite (VTS), HIDL arayüz seviyesinde çalışan bir test paketidir. VTS kullanımı hakkında daha fazla bilgi için bkz. Vendor Test Suite .

Uyumluluk Test Paketi (CTS) testleri

Kamera Android Uyumluluk Test Paketi (CTS), cihaz uyumluluğuna odaklanmayı test eder. Bir test ortamı kurma hakkında bilgi için, bkz. CTS Kurma .

Kamera CTS testleri için başlangıç ​​yolu: platform/cts .

Harici kameraları (USB web kameraları gibi) destekleyen cihazlar için kamera CTS'yi çalıştırırken, CTS'yi çalıştırırken takılı bir cihazınız olması gerekir, aksi takdirde testler otomatik olarak başarısız olur. Harici kamera örnekleri şunları içerir: Logitech HD Pro Webcam C920 ve Microsoft LifeCam HD-3000 .

CTS'yi çalıştırmayla ilgili genel talimatlar için CTS girişine ve alt sayfalarına bakın.

android.hardware.Camera API için CTS testleri

Bu kamera testlerini cts/tests/tests/ altında bulun:

  • 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

android.hardware.camera2 API'si için CTS testleri

Bu kamera testlerini cts/tests/tests/ altında bulun:

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

CTS Doğrulayıcı kamera testleri

Şu kamera testlerini bulun: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Image Test Suite (ITS) testleri

Camera Image Test Suite (ITS), görüntü doğruluğuna odaklanmayı test eder. Testleri gerçekleştirmek için, USB üzerinden bağlı Android cihaz ile bir iş istasyonunda Python komut dosyalarını çalıştırın.

Camera ITS altyapısı ve testleri cts/apps/CameraITS dizininde bulunur. Her test, bir tests/scene # alt dizininde bulunur.

Test ortamını kurmak için şunu çalıştırın:
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

Testlerin nasıl ayarlanıp çalıştırılacağı hakkında daha fazla bilgi için cts/apps/CameraITS içindeki CameraITS PDF dosyasına cts/apps/CameraITS . Komut dosyalarının nasıl kullanılacağına ilişkin bir kılavuz için tests alt dizinindeki tutorial.py bakın.

ITS statik testleri (0-5 sahneleri) gerekli Python 2.7 ortamına sahip herhangi bir işletim sistemi ile çalışabilir. Ancak, Sensor Fusion Box ile sensor_fusion testi Linux işletim sistemi ile çalıştırılmalıdır.

Sahneler 0-4 için önerilen kurulum, Kamera ITS kutusu içinde açıklanmıştır . Sensor_fusion sahnesi için önerilen kurulum, Sensor Fusion Box Hızlı Başlangıç ​​Kılavuzu'nda açıklanmıştır .

ITS'yi manuel olarak çalıştırmak için beyaz duvar, gri kart ve masa lambası gibi belirli, yeniden kullanılabilir bir hedefle basit bir fiziksel ortam hazırlayın. Android cihazı bir tripoda monte edin ve kamera işlevlerini test etmek için komut dosyalarını çalıştırın. Çoğu test başarılı veya başarısız ancak bazıları ölçütler sunuyor.

Bu komut dosyaları, CTS'de test edilmeyen ve HAL 3.2 test planının önemli bir bileşeni olan senaryoları test eder.

ITS testleri başarılı veya başarısız olur. Her sahne klasöründeki tüm zorunlu testler geçmelidir. Zorunlu olmayan testler başarısız olabilir ve yine de CtsVerifier bir geçiş olarak CtsVerifier .

Sahne 0 ila sahne 4 testleri

Bu sahneler, ITS testinin büyük bir bölümünü temsil eder ve scene klasörüne PDF dosyaları olarak dahil edilir. Bu testleri otomatikleştirmek için, Camera ITS-in-a-box sistemini kullanın.

  • Sahne 0: Kurulum gerektirmez.
  • Sahne 1: Gri kart gerektirir.
  • Sahne 2: Bir yüz sahnesi gerektirir.
  • Sahne 3: ISO12233 tablosu.
  • Sahne 4: Bir kare içinde daire bulunan özel sahne.

Sahne 5 testleri

Sahne 5 testleri, kameranın üstüne bir difüzör yerleştirilmesini gerektirir.

Sensör füzyon testleri

Sensör füzyon testleri, AR ve VR uygulamaları için kamera ile jiroskop arasındaki zaman damgası farkını test etmek için özel kamera hareketi gerektirir. Jiroskop dahil değilse veya REALTIME parametresi etkinleştirilmemişse bu test atlanır. sensor_fusion testi, Sensor Fusion Box ile otomatik hale getirilebilir.

Media Framework testleri

MediaFrameworkTest'te kamerayla ilgili tüm medya testlerini geçin. Lütfen bu testlerin mediaframeworktest.apk dosyasının Android cihaza yüklenmesini gerektirdiğini unutmayın. make mediaframeworktest ve ardından ortaya çıkan .apk make mediaframeworktest yüklemek için adb kullanmanız gerekecektir. Örnek komutlar aşağıda yer almaktadır.

Kamera ile ilgili ortam çerçevesi testleri için başlangıç ​​yolu şudur: platform/frameworks/base

Testlerin kaynak kodunu burada bulun: frameworks/base/media/tests/MediaFrameworkTest

Bu testleri ayarlamak için:

make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk

name değişkeninin satıcının ürününü içeren dizini temsil ettiği yer.

Aşağıdaki dizinde veya alt dizinlerinde tüm testleri bulun:

frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest

Her alt dizin bir test sınıfını temsil eder:

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

Media Framework testlerini çalıştırma

Mevcut tüm testleri görmek için:

adb shell pm list instrumentation

Bu, aşağıdakilere benzer sonuçlar verecektir:

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)

Her test satırından bileşeni ( instrumentation: ve (target=com.android.mediaframeworktest) arasında tanımlayın ve MediaFramework TestRunner , hedef paket adı ( com.android.mediaframeworktest ) ve test çalıştırıcı adından ( MediaFramework TestRunner MediaFramework TestRunner ).

Örneğin:

com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner

Daha sonra her bileşeni adb shell am instrument şu şekilde iletebilirsiniz:

adb shell am instrument -w component.name

Burada component.name yukarıda çıkarılan değerine eşittir. Örneğin:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Lütfen unutmayın, sınıf yolu Java paketi + sınıf adı olsa da, araç paketi Java paketi ile aynı olmayabilir. Test çalıştırıcı sınıfının bulunduğu Java paketini değil, bileşen adını birleştirirken AndroidManifest.xml paketini kullandığınızdan emin olun.

Tek bir test sınıfı çalıştırmak için -e sınıfını geçin argüman, şöyle:

adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Bir test sınıfında yalnızca tek bir yöntemi çalıştırmak için, sınıf adına bir pound (#) işareti ve yöntem adı (bu durumda, testConnectPro ) testConnectPro , örneğin:

adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Medya ayarları işlevsel testleri

İşte bir fonksiyonel testin örnek çalışması. Bu test, farklı kamera ayarı kombinasyonlarının temel işlevselliğini doğrular. (yani Flaş, pozlama, WB, sahne, resim boyutu ve geoTag)

Test komutunu çalıştırın:

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

Medya entegrasyon testleri

İşte bir entegrasyon testinin örnek çalışması, bu durumda mediaframeworktest / integration / CameraBinderTest.java ve mediaframeworktest / CameraStressTestRunner.java:

adb  shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'

Başarılı olursa, bu şuna benzer bir çıktıyla sonuçlanır:

-----

com.android.mediaframeworktest.integration.CameraBinderTest:...........
Test results for CameraStressTestRunner=...........
Time: 3.328

OK (11 tests)

-----

Medya performans testleri

Bu önizleme bellek testi, kamera önizlemesini 200 kez açacak ve yayınlayacaktır. Her 20 yinelemede, ps ortam sunucusunun anlık görüntüsü kaydedilecek ve 200 yinelemeden sonra farklı bellek kullanımını karşılaştıracaktır. Fark 150kM'den fazlaysa test başarısız olur.

Test komutunu çalıştırın:

adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner

Daha ayrıntılı çıktı şu adreste bulunabilir: /sdcard/mediaMemOutput.txt

Medya birimi testleri

Birim testlerini çalıştırma komutlarının tümü benzerdir. Örneğin, CameraMetadataTest.java için komut şöyle olacaktır:

adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'

Medya stres testleri

Bu test, kamera görüntüsü yakalama ve video kaydını vurgulamak içindir.

Test komutunu çalıştırın:

adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner

Tüm testler geçmelidir.

Manuel TestingCam testleri

TestingCam uygulaması, aşağıdaki kontroller gerçekleştirilerek manuel olarak çalıştırılmalıdır. TestingCam kaynağı burada: pdk/apps/TestingCamera/

Kamera eğimli sonsuz odak

TestingCam'i başlatın, önizlemeyi açın ve otomatik odak modunun sonsuza ayarlandığından emin olun. Fotoğraf çek düğmesini kullanarak, fotoğraf makinesi yatay, yukarı (dikeye yakın) ve aşağı (dikeye yakın) bakacak şekilde uzaktaki konuların (en az 10 m uzakta) çekimini yapın; Yukarı doğru atışın bir örneği, alttan bir ağacın yüksek yaprakları / dalları olabilir ve aşağı doğru atış örneği, bir binanın çatısından görülen cadde olabilir. Her durumda, uzaktaki konu net ve odaklanmış olmalıdır. Yakınlaştırıp netliği daha kolay inceleyebilmek için çekimleri galeri görünümünde kaydedin ve görüntüleyin.

VCM aktüatörlü bir kameranın bu testi geçmesi için ya kapalı döngü AF kontrol sistemi gerekeceğini ya da kamera yönünü belirlemek için ivmeölçer verilerini kullanmaya dayalı bir tür SW düzeltmesi gerekeceğini unutmayın. Lens sonsuzluk pozisyonunun güvenilir fabrika kalibrasyonu da gerekli olacaktır.

Manuel TestingCam2 testleri

TestingCam2 uygulaması, aşağıdaki kontroller gerçekleştirilerek manuel olarak çalıştırılmalıdır. TestingCam2 kaynağı burada: pdk/apps/TestingCamera2/

JPEG yakalama

TestingCam2'yi başlatın ve JPEG düğmesine basın. Vizör görüntüsünün sağında görünen görüntü, aynı yönelim de dahil olmak üzere vizörle aynı görünmelidir.