Bu sayfada, Android kamerayı değerlendirmek için kullanılabilecek tüm testler listelenmektedir donanım soyutlama katmanı (HAL) Orijinal ekipmanlara yöneliktir üreticiler (OEM'ler) ve uygulama kameranın doğru şekilde uygulanmasını sağlamaları için işlemci (AP) tedarikçi firmaları Minimum kusurlu HAL. Bu, Android'e yapılan gönüllü bir ekleme olsa da Uyumluluk Test Paketi (CTS) ile birlikte kamera testi kapsamını büyük ölçüde potansiyel hataları belirler.
OEM'ler bu testleri geçerek
Android'i düzgün bir şekilde entegre edip etmedikleri
kamera donanımı
soyutlama katmanı (HAL) 3 arayüzleri Projenizdeki tüm öğelere
kontrol listesinde olması durumunda, cihaz uygulaması tam olarak
içine girelim. Bu durumda, cihaz
doğru şekilde desteklemek
android.hardware.camera2
paketi
geliştirmenizi sağlar.
Kamera HAL3 özellikleri
Android Kamera HAL3 spesifikasyonu proje yöneticisinin cihazların karşılaması gereken koşullarla ilgili bilgi; bu sayfada bir özete yer veriliyor kontrol listesi olarak kullanılabilecek tüm testlerden oluşur. Kamera HAL uygulamaları (ör. AP tedarikçileri) Kamera HAL3 spesifikasyonlarını satır satır incelemeli ve ve cihazlar buna uygun.
Geçerli HAL spesifikasyonu Android içinden bu dosyalarda tanımlanmıştır 5.0 ve sonraki sürümler için genel Android Platformu Geliştirme Kiti (PDK):
- Kamera HAL 3.x arayüzü ve teknik özellikleri:
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- Kamera HAL 3.x meta veri spesifikasyonu:
system/media/camera/docs/docs.html
- HAL piksel biçimi arayüzü ve spesifikasyon:
system/core/libsystem/include/system/graphics.h
Kamera test türleri
En son Android kamera için sunulan birincil test türleri aşağıda verilmiştir ve aşağıda, ilgili talimatlara referanslar verilmiştir:
- Tedarikçi Firma Test Paketi (VTS): Doğrudan testin gerçekleştirildiği kamera HAL arayüzü
- Uyumluluk Test Paketi (CTS): Standart, otomatik Android cihaz uyumluluğu için testler yapar. Daha fazla bilgi için bkz. Uyumluluk Test Paketi ve Ticaret Federasyonu Genel Bakış.
- Görüntü Test Paketi (ITS): Manuel olarak çalıştırma test edilir. Daha fazla bilgi için bkz. Kamera ITS.
- Manuel Test Kamerası testleri:
pdk/apps/TestingCamera/
konumundaki kaynaktan çalıştır - Manuel TestCam2.1
testler:
pdk/apps/TestingCamera2/
içindeki kaynaktan çalıştırın
Bu test türlerinin tümü aşağıda ayrıntılı olarak açıklanmaktadır. Bu testler, OEM'lerin yürütmesinin beklendiği kronolojik sırada sunulur oluşturabilirsiniz.
Örneğin, bir cihaz yerel testlerde başarısız olursa Uyumluluk Test Paketi (CTS) testlerinin sonuçlarını içerir. Bir cihaz CTS'de başarısız olursa Görüntü Test Paketi'ne (ITS) geçmenin pek bir faydası yoktur. Önerilerimiz: sonraki test türüne geçmeden önce her bir test türündeki hataları giderme testler.
Tedarikçi Firma Test Paketi (VTS) testleri
Android Vendor Test Suite (VTS), HIDL arayüz düzeyi. VTS'yi kullanma hakkında daha fazla bilgi için bkz. Tedarikçi Firma Test Paketi.
Uyumluluk Test Paketi (CTS) testleri
Kamera Android Compatibility Test Suite (CTS) testlerinin cihaza odaklanılması uyumluluk. Test ortamı kurma hakkında bilgi için CTS'yi ayarlama konusuna bakın.
Kamera CTS testlerinin başlangıç yolu: platform/cts
.
Harici kameraları destekleyen cihazlarda (ör. USB web kameraları) kullanıyorsanız CTS'yi veya testleri çalıştırırken bir cihaz takılı olmalıdır. otomatik olarak başarısız olur. Harici kameralara örnek olarak şunlar verilebilir: Logitech HD Pro Web Kamera C920 ve Microsoft LifeCam HD-3000.
CTS'yi inceleyin CTS'yi çalıştırmaya ilişkin genel talimatlar için ve alt sayfalarında yer alan makaleyi inceleyin.
CTS testleri
android.hardware.Camera
API
cts/tests/tests/
kapsamında şu kamera testlerini bulabilirsiniz:
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 testleri
android.hardware.camera2
API
cts/tests/tests/
kapsamında şu kamera testlerini bulabilirsiniz:
hardware/src/android/hardware/camera2/cts/*
permission/src/android/permission/cts/Camera2PermissionTest.java
CTS Doğrulayıcı kamera testleri
Bu kamera testlerini şu başlıklar altında 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ü doğruluğuna odaklanır. Testleri gerçekleştirmek için Python komut dosyalarını Android cihaz USB üzerinden bağlandı.
Kamera BTS altyapısı ve testleri,
cts/apps/CameraITS
dizini.
Her test, bir tests/scene#
alt dizininde bulunur.
Testleri ayarlama ve çalıştırma hakkında daha fazla bilgi için bkz. Kamera ITS.
Sahne ve test açıklamaları için Kamera ITS Testleri'ne bakın.
ITS testleri geçer ya da başarısız olur. Her sahne klasöründeki tüm zorunlu testler başarılı olmalıdır.
Zorunlu olmayan testler başarısız olabilir ve yine de başarılı olarak sayılır.
CtsVerifier
ITS, CTS'de test edilmemiş ve önemli bir test senaryosu olan test planının bir bileşenidir.
Media Framework testleri
MediaFrameworkTest'te kamerayla ilgili tüm medya testlerini geçin. Lütfen
bu testlerin, Android sisteme mediaframeworktest.apk uygulamasının yüklenmesini gerektirdiğini
olanak tanır. make mediaframeworktest
ve ardından adb kullanmanız gerekir
yükleyin. Örnek komutlar aşağıda verilmiştir.
Kamera ile 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
Burada name değişkeni satıcının ürününü içeren dizin
Aşağıdaki dizinde veya alt dizinlerinde bulunan 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, şuna benzer sonuçlar verir:
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)
Bileşeni tanımlayın ve çıkarın (instrumentation:
arasında)
ve (target=com.android.mediaframeworktest)
tuşlarına basın.
Bileşen, hedef paket adından oluşur
(com.android.mediaframeworktest
) ve test çalıştırıcısının adı
(MediaFramework
).
Ö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
gibi
dolayısıyla:
adb shell am instrument -w component.name
Burada component.name
, ayıklanan değere eşittir
bölümünü ziyaret edin. Örneğin,
örnek:
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Sınıf yolunun Java paket + sınıf adı olsa da, enstrümantasyon paketinin, Java paketiyle aynı olması gerekmez. Marka bileşeni birleştirirken AndroidManifest.xml paketini kullandığınızdan emin olun paket adını girin.
Tek bir test sınıfı çalıştırmak için -e sınıfı
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 kare (#) işareti ve
yöntem adını (bu örnekte testConnectPro
) sınıf adına ekleyin. Örneğin:
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Medya ayarları işlev testleri
Aşağıda, örnek bir işlevsel test çalıştırılmıştır. Bu test, kombinasyonlarını birleştiriyor. (ör. Flash, 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
Aşağıda, örnek bir entegrasyon testi verilmiştir. Bu örnekte mediaframeworktest/integration/KameraBinderTest.java ve mediaframeworktest/KameraStressTestRunner.java:
adb shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'
Başarılı olursa şuna benzer bir çıkış elde edersiniz:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
Medya performans testleri
Bu önizleme bellek testi, 200° kamera önizlemesi açılır ve kez. Her 20 yinelemede, ps mediaserver'ın anlık görüntüsü kaydedilir 200 yinelemeden sonraki bellek kullanımını karşılaştırır. Testin amacı 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ı çıkış şurada bulunabilir:
/sdcard/mediaMemOutput.txt
.
Medya birimi testleri
Birim testlerini çalıştırmak için kullanılan komutların tümü benzerdir. Örneğin, CameraMetadataTest.java için komut şöyle olur:
adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
Medya stres testleri
Bu testin amacı, kamera görüntüsü yakalama ve video kaydını öne çıkarmaktı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 başarılı olacaktır.
Manuel Test Kamerası testleri
TestingCam uygulaması, aşağıdaki kontroller uygulanarak manuel olarak çalıştırılmalıdır.
TestingCam'in kaynağı şurada: pdk/apps/TestingCamera/
Kamera yatırma özelliğiyle sonsuz odak noktası
TestCam'i başlatın, önizlemeyi açın ve otomatik odaklama modunun sonsuzluk. Fotoğraf çek düğmesini kullanarak, çektiğiniz fotoğrafların kamera yatay yönde, uzaktaki özneler (en az 10 metre uzakta) yukarı (dikeye yakın) ve aşağı (dikeye yakın); şöyle bir örnek: yukarı doğru çekim, aşağıdan yüksek yapraklar/ağaç dalları ve üst örnek olarak bir binanın çatısından görünen sokak gösterilebilir. yapı. Her durumda, uzaktaki özne net ve net olmalıdır. Kaydet ve görüntüleri galeri görünümünde görüntüleyin, böylece yakınlaştırıp daha kolay hale getirir.
VCM aktüatörü bulunan bir kameranın bu testi geçebilmesi için kapalı döngülü AF kontrol sistemi olabilir ya da kamera yönünü belirlemek için ivme ölçer verilerinden yararlanarak düzeltme Lensin sonsuzluk pozisyonunun güvenilir fabrika kalibrasyonuna da ihtiyaç duyulur.
Manuel TestCam2 testleri
TestCam2 uygulaması, aşağıdaki kontrollerle manuel olarak çalıştırılmalıdır
gerçekleştirildi. TestingCam2'nin kaynağı şurada: pdk/apps/TestingCamera2/
JPEG yakalama
TestCam2'yi başlatın ve JPEG düğmesine basın. Resim görünen vizörün sağ tarafında görünen vizörün aynı yöne sahip vizör de dahildir.