Kamera HAL Testi Kontrol Listesi

Bu belge, Android kamera donanım soyutlama katmanını (HAL) değerlendirmek için kullanılabilen tüm testleri listeler. Orijinal ekipman üreticileri (OEM'ler) ve uygulama işlemcisi (AP) satıcılarına yöneliktir, böylece kamera HAL'inin minimum kusurla doğru şekilde uygulanmasını sağlayabilirler. Bu, Android Uyumluluk Test Paketi'ne (CTS) isteğe bağlı bir ekleme olmasına rağmen, kamera testi kapsamını büyük ölçüde artırır ve kesinlikle olası hataları belirleyecektir.

OEM'ler bu testleri geçerek, Android kamera donanım soyutlama katmanı (HAL) 3 arabirimlerini düzgün şekilde entegre edip etmediklerini doğrular. Kontrol listesindeki tüm öğeleri ile uyumlu olduğunda, bir cihaz uygulaması Android Kamera HAL arayüzleri açısından tam olarak kabul edilebilir. Bu irade sırayla düzgün desteklemek için bir cihaz etkinleştirmek android.hardware.camera2 kamera üzerine yapı uygulamaları o paketi.

Kamera HAL3 özelliği

Android Kamera HAL3 şartname cihazlar yerine getirmelidir gerekenler hakkında bilgi kaynak mı; bu sayfa, kontrol listesi olarak kullanılabilecek tüm testlerin bir özetini sunar. Camera HAL uygulayıcıları (örneğin AP satıcıları), Camera HAL3 spesifikasyonunu satır satır gözden geçirmeli ve cihazlarının buna uygun olduğundan emin olmalıdır.

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

Kamera test türleri

En yeni Android kamera için mevcut olan başlıca test türleri ve aşağıdaki ilgili talimatlara referanslar aşağıda 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 testlerde başarısız olursa, sonraki Uyumluluk Test Paketi (CTS) testlerinde kesinlikle başarısız olacaktır. Ve eğer bir cihaz CTS'de başarısız olursa, Image Test Suite'e (ITS) ilerlemenin çok az faydası vardır. Bir sonraki test grubuna geçmeden önce her bir 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 Satıcı Testi Suite .

Uyumluluk Test Paketi (CTS) testleri

Kamera Android Uyumluluk Test Paketi (CTS) testleri, cihaz uyumluluğuna odaklanır. Bir test ortamının ayarlanması ile ilgili bilgi için, bkz CTS kurma .

Kamera CTS testler için başlangıç yol: platform/cts .

Harici kameraları (USB web kameraları gibi) destekleyen aygıtlar için kamera CTS'sini çalıştırırken, CTS'yi çalıştırırken takılı bir aygıtınız olmalıdır, aksi takdirde testler otomatik olarak başarısız olur. Dış kameralar örnekleri şunlardır: Logitech HD Pro Webcam C920 ve Microsoft LifeCam HD-3000 .

Bkz CTS giriş ve CTS çalışan ilgili genel talimatlar için Alt sayfaları.

CTS için test android.hardware.Camera API

Altında bu kamera testlerini bul 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

CTS için test android.hardware.camera2 API

Altında bu kamera testlerini bul cts/tests/tests/ :

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

CTS Doğrulayıcı kamera testleri

Altında bu kamera testlerini bul: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Görüntü Test Paketi (ITS) testleri

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

Kamera ITS altyapı ve testler bulunmaktadır cts/apps/CameraITS dizininde. Bir de her test bulunduğu tests/scene # alt dizin.

Test ortamı kurmak için ç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

Kurmak ve testler konusunda daha fazla bilgi için bkz CameraITS PDF dosyasını cts/apps/CameraITS . Bkz tutorial.py içinde tests komut dosyalarını nasıl kullanılacağına ilişkin bir rehber alt dizin.

ITS statik testleri (sahneler 0-5), gerekli Python 2.7 ortamına sahip herhangi bir işletim sistemiyle çalışabilir. Ancak, sensor_fusion test Sensör Füzyon Box Linux işletim sistemi ile çalıştırılmalıdır.

Sahneler için tavsiye edilen kurulum 0-4 açıklanan Kamera ITS-in-a-box . Sensor_fusion sahne için tavsiye edilen kurulum açıklanan Sensör Füzyon Kutusu Hızlı Başlangıç Kılavuzu .

ITS'yi manuel olarak çalıştırmak için beyaz duvar, gri kart ve masa lambası gibi belirli, yeniden kullanılabilir bir hedef içeren basit bir fiziksel ortam hazırlayın. Android cihazını 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ızdır, ancak bazıları metrikler sunar.

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 ya geçer ya da başarısız olur. Her sahne klasöründeki tüm zorunlu testler geçmelidir. Hala başarısız olabilir zorunlu değildir ve Testler bir geçiş sayılır CtsVerifier .

Sahne 0'dan sahne 4'e testler

Bu sahneler ITS test büyük bir bölümünü temsil eden ve PDF dosyaları olarak dahil edilmiştir scene klasöründe. Bu testleri otomatikleştirmek için kullanın kamera kendi-içinde-a-box sistemi.

  • Sahne 0: Kurulum gerektirmez.
  • Sahne 1: Gri kart gerektirir.
  • Sahne 2: Bir yüz sahnesi gerektirir.
  • Sahne 3: ISO12233 tablosu.
  • Sahne 4: Kare içinde daire olan ö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 birleştirme testleri, AR ve VR uygulamaları için kamera ve jiroskop arasındaki zaman damgası farkını test etmek için belirli kamera hareketini gerektirir. Bu test hiçbir jiroskop dahil edilip edilmediğini atlanır veya eğer REALTIME parametre etkin değildir. sensor_fusion testi ile otomatik hale getirilebilir Sensör Füzyon Kutusu .

Medya Çerçevesi testleri

MediaFrameworkTest'te kamerayla ilgili tüm medya testlerini geçin. Lütfen unutmayın, bu testler Android cihazda mediaframeworktest.apk'nin kurulu olmasını gerektirir. Sen gerekir make mediaframeworktest ve daha sonra ortaya çıkan .apk yüklemek için adb kullanın. Örnek komutlar aşağıda yer almaktadır.

Kamera-ilişkili ortam çerçevesi testler için başlangıç yol: platform/frameworks/base

Burada testler için kaynak kodunu bulun: frameworks/base/media/tests/MediaFrameworkTest

Bu testleri ayarlamak için:

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

Nerede name değişken satıcının ürünü içeren dizini temsil eder.

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)

Tespit arasında (bileşeni çıkarmak instrumentation: ve (target=com.android.mediaframeworktest) her bir test hattından bileşen hedef paket adı oluşmaktadır (. com.android.mediaframeworktest () ve test kanal adı 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 bir bileşen iletebilir adb shell am instrument şöyle:

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, sınıf yolu Java paketi + sınıf adı olsa da, enstrümantasyon paketinin Java paketiyle aynı olması gerekmediğini unutmayın. Bileşen adını birleştirirken test çalıştırıcı sınıfının bulunduğu Java paketini değil, 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

Sadece bir test sınıfında tek yöntem, komuta (bu durumda, bir diyez (#) işareti ve yöntem adı çalıştırmak için testConnectPro sınıfının adıyla), şöyle:

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

Medya ayarları işlevsel testleri

İşte bir işlevsel test çalıştırması örneği. Bu test, farklı kamera ayarları kombinasyonlarının temel işlevlerini doğrular. (yani, Flash, 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 testi örneği, bu durumda mediaframeworktest/integration/CameraBinderTest.java ve mediaframeworktest/CameraStrressTestRunner.java:

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

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

-----

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

OK (11 tests)

-----

Medya performans testleri

Bu ön izleme bellek testi, kamera ön izlemesini 200 kez açacak ve serbest bırakacaktır. Her 20 yinelemede, ps mediaserver'ın anlık görüntüsü kaydedilecek ve 200 yinelemeden sonra farklı bellek kullanımını karşılaştıracaktır. Fark 150kM'den büyükse test başarısız olacaktır.

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ı bulunabilir: /sdcard/mediaMemOutput.txt

Medya birim 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 için kaynak buradadır: pdk/apps/TestingCamera/

Kamera eğimi ile sonsuz odak

TestingCam'i başlatın, önizlemeyi açın ve otomatik odak modunun sonsuz olarak ayarlandığından emin olun. Al resim düğmesini, uzaktaki nesnelerin yakalama çekim kamera ile (uzağa az 10m) yukarı doğru (kapat dikey), yatay olarak sivri ve aşağı doğru (kapat dikey) kullanarak; Yukarı doğru atışa bir örnek, alttan bir ağacın yüksek yaprakları/dalları olabilir ve aşağı atışa bir örnek, bir binanın çatısından görülen sokak olabilir. Her durumda, uzaktaki özne keskin ve odakta olmalıdır. Yakınlaştırabilmeniz ve netliği daha kolay kontrol edebilmeniz 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 gerektireceğ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 sonsuz konumunun 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 için kaynak buradadır: pdk/apps/TestingCamera2/

JPEG yakalama

Başlangıç TestingCam2 ve basın JPEG düğmesine basın. Vizör görüntüsünün sağında görünen görüntü, aynı yöne sahip olmak da dahil olmak üzere vizörle aynı görünmelidir.