Kamera HAL testi kontrol listesi

Bu sayfa, 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'nin minimum kusurla doğru şekilde uygulanmasını sağlayabilirler. Bu, Android Uyumluluk Testi Paketi'ne (CTS) isteğe bağlı bir eklenti olmasına rağmen, kamera testi kapsamını büyük ölçüde artırır ve potansiyel hataları kesinlikle tespit eder.

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

Kamera HAL3 spesifikasyonu

Android Kamera HAL3 spesifikasyonu, hangi cihazların karşılaması gerektiği konusunda yetkili bilgi kaynağıdır; Bu sayfada kontrol listesi olarak kullanılabilecek tüm testlerin bir özeti sunulmaktadır. Kamera HAL uygulayıcıları (örneğin 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 yeni Android kamera için mevcut olan temel test türleri ve ilgili talimatlara ilişkin 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ıraya göre sunulmaktadır.

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

Satıcı Test Paketi (VTS) testleri

Android Vendor Test Suite (VTS), HIDL arabirim düzeyinde çalışan bir test paketidir. VTS'yi kullanma hakkında daha fazla bilgi için bkz. Satıcı Test Paketi .

Uyumluluk Test Paketi (CTS) testleri

Kamera Android Uyumluluk Test Paketi (CTS) testleri cihaz uyumluluğuna odaklanır. Test ortamı ayarlama hakkında bilgi için bkz. CTS'yi Ayarlama .

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

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

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

android.hardware.Camera API'si 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 Verifier kamera testleri

Bu kamera testlerini şu adreste bulabilirsiniz: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

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

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

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

Testlerin nasıl kurulacağı ve çalıştırılacağı hakkında daha fazla bilgi için bkz. Kamera ITS .

Sahne ve test açıklamaları için bkz. Kamera ITS Testleri .

ITS testleri ya geçer ya da başarısız olur. Her sahne klasöründeki tüm zorunlu testlerin geçmesi gerekir. Zorunlu olmayan testler başarısız olabilir ve CtsVerifier yine de başarılı olarak sayılır.

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

Medya Çerçevesi testleri

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

Kamerayla ilgili medya çerçevesi testlerinin başlangıç ​​yolu şu şekildedir: platform/frameworks/base

Testlerin kaynak kodunu burada bulabilirsiniz: 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ırın

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

adb shell pm list instrumentation

Bu, aşağıdakine 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) tanımlayın ve çıkarın. Bileşen, hedef paket adı ( com.android.mediaframeworktest ) ve test çalıştırıcısı adından ( MediaFramework TestRunner oluşur. 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şeni adb shell am instrument şu şekilde aktarabilirsiniz:

adb shell am instrument -w component.name

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

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

Lütfen sınıf yolunun Java paketi + sınıf adı olmasına rağmen enstrümantasyon paketinin mutlaka Java paketiyle aynı olmadığını unutmayın. Bileşen adını birleştirirken test çalıştırıcısı 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ını çalıştırmak için -e sınıfını geçin argüman şu şekilde:

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ını (bu durumda, testConnectPro ) ekleyin:

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

Medya ayarları işlevsel testleri

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

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

Burada bir entegrasyon testinin örnek çalışması verilmiştir; 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, şuna benzer bir çıktı elde edilir:

-----

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

OK (11 tests)

-----

Medya performans testleri

Bu önizleme hafıza testi, kamera önizlemesini 200 kez açacak ve yayınlayacaktır. Her 20 yinelemede, ps mediaserver'ın anlık görüntüsü kaydedilecek ve 200 yinelemeden sonraki farklı bellek kullanımı karşılaştırılacaktır. Fark 150kM'den büyükse 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 testin amacı kameradan görüntü yakalama ve video kaydetmeyi vurgulamaktır.

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 TestKamera testleri

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

Kamera eğimi ile sonsuz odaklama

TestingCam'i başlatın, önizlemeyi açın ve otomatik odaklama modunun sonsuz olarak ayarlandığından emin olun. Fotoğraf çek düğmesini kullanarak, uzaktaki nesnelerin (en az 10 m uzaklıktaki) fotoğraflarını, kamera yatay, yukarı (dikey'e yakın) ve aşağı (dikey'e yakın) bakacak şekilde çekin; Yukarı doğru çekimin bir örneği, bir ağacın alttan yüksek yaprakları/dalları olabilir ve aşağı doğru çekimin bir örneği, bir binanın çatısından görülen sokak olabilir. Her durumda uzaktaki konu net ve odakta olmalıdır. Çekimleri galeri görünümünde kaydedin ve görüntüleyin, böylece yakınlaştırıp keskinliği daha kolay inceleyebilirsiniz.

VCM aktüatörlü bir kameranın bu testi geçmesi için kapalı döngü AF kontrol sistemine veya kamera yönünü belirlemek için ivmeölçer verilerinin kullanılmasına dayalı bir tür SW düzeltmesine ihtiyaç duyacağını unutmayın. Lens sonsuzluk konumunun güvenilir fabrika kalibrasyonuna da ihtiyaç duyulacaktır.

Manuel TestCam2 testleri

TestingCam2 uygulaması aşağıdaki kontroller gerçekleştirilerek manuel olarak çalıştırılmalıdır. TestingCam2'nin 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önelime sahip olmak da dahil olmak üzere vizörle aynı görünmelidir.