รายการตรวจสอบการทดสอบกล้อง HAL

เอกสารนี้แสดงรายการการทดสอบทั้งหมดที่มีสำหรับการประเมินเลเยอร์ที่เป็นนามธรรมของฮาร์ดแวร์กล้อง Android (HAL) มีไว้สำหรับผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) และผู้จำหน่ายตัวประมวลผลแอปพลิเคชัน (AP) ดังนั้นพวกเขาจึงสามารถรับรองการใช้งานกล้อง HAL อย่างเหมาะสมโดยมีข้อบกพร่องน้อยที่สุด แม้ว่านี่จะเป็นการเพิ่มโดยสมัครใจของชุดทดสอบความเข้ากันได้ของ Android (CTS) แต่ก็เพิ่มความครอบคลุมในการทดสอบกล้องอย่างมากและจะระบุจุดบกพร่องที่อาจเกิดขึ้นได้อย่างแน่นอน

เมื่อผ่านการทดสอบเหล่านี้ OEM จะตรวจสอบว่าได้ผสานรวมอินเทอร์เฟซสำหรับเลเยอร์ฮาร์ดแวร์ที่เป็นนามธรรมของกล้อง Android (HAL) 3 อย่างถูกต้องหรือไม่ เมื่อสอดคล้องกับรายการทั้งหมดในรายการตรวจสอบการดำเนินงานอุปกรณ์อาจมีการพิจารณาที่เต็มไปด้วยความเคารพในการเชื่อมต่อกล้อง Android HAL จะเปิดในนี้เปิดใช้งานอุปกรณ์ที่จะต้องสนับสนุน android.hardware.camera2 แพคเกจที่กล้องปพลิเคชันสร้างเมื่อ

สเปคของกล้อง HAL3

Android กล้อง HAL3 สเปคเป็นแหล่งที่มีสิทธิ์ของข้อมูลเกี่ยวกับสิ่งอุปกรณ์ที่ต้องตอบสนอง; หน้านี้ให้ข้อมูลสรุปการทดสอบทั้งหมดที่สามารถใช้เป็นรายการตรวจสอบได้ ผู้ใช้งาน Camera HAL (เช่น ผู้จำหน่าย AP) ควรผ่านข้อกำหนดของ Camera HAL3 ทีละบรรทัด และตรวจสอบให้แน่ใจว่าอุปกรณ์ของพวกเขาเป็นไปตามข้อกำหนด

ข้อกำหนด HAL ปัจจุบันถูกกำหนดไว้ในไฟล์เหล่านี้ภายใน Android 5.0 และ Android Platform Development Kit (PDK) ทั่วไปที่ใหม่กว่า:

ประเภทการทดสอบกล้อง

ต่อไปนี้คือประเภทการทดสอบหลักสำหรับกล้อง Android รุ่นล่าสุด พร้อมด้วยข้อมูลอ้างอิงถึงคำแนะนำที่เกี่ยวข้องด้านล่าง:

ประเภทการทดสอบทั้งหมดนี้มีรายละเอียดอธิบายไว้ด้านล่าง การทดสอบเหล่านี้แสดงตามลำดับเวลาซึ่ง OEM คาดว่าจะดำเนินการ

ตัวอย่างเช่น หากอุปกรณ์ไม่ผ่านการทดสอบในเครื่อง ก็จะล้มเหลวในการทดสอบชุดทดสอบความเข้ากันได้ (CTS) ที่ตามมาอย่างแน่นอน และหากอุปกรณ์ใช้ CTS ไม่ได้ การใช้งาน Image Test Suite (ITS) ก็แทบไม่มีประโยชน์ เราขอแนะนำให้จัดการกับความล้มเหลวในการทดสอบแต่ละประเภทก่อนที่จะดำเนินการทดสอบชุดถัดไป

การทดสอบ Vendor Test Suite (VTS)

Android Vendor Test Suite (VTS) เป็นชุดทดสอบที่ทำงานในระดับอินเทอร์เฟซ HIDL สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ VTS ดู ผู้ขาย Test Suite

การทดสอบความเข้ากันได้ของชุดทดสอบ (CTS)

การทดสอบ Camera Android Compatibility Test Suite (CTS) เน้นที่ความเข้ากันได้ของอุปกรณ์ สำหรับข้อมูลเกี่ยวกับการตั้งค่าสภาพแวดล้อมการทดสอบให้ดูที่ การตั้งค่า CTS

เส้นทางเริ่มต้นสำหรับการทดสอบ CTS กล้อง: platform/cts

เมื่อเรียกใช้ CTS ของกล้องสำหรับอุปกรณ์ที่รองรับกล้องภายนอก (เช่น เว็บแคม USB) คุณต้องเสียบอุปกรณ์ไว้เมื่อเรียกใช้ CTS ไม่เช่นนั้นการทดสอบจะล้มเหลวโดยอัตโนมัติ ตัวอย่างของกล้องภายนอกรวมถึง: Logitech HD Pro Webcam C920 และ ไมโครซอฟท์ LifeCam HD-3000

ดู CTS แนะนำ และหน้าย่อยสำหรับคำแนะนำทั่วไปเกี่ยวกับการทำงาน CTS

CTS ทดสอบสำหรับ android.hardware.Camera API

ค้นหาการทดสอบกล้องเหล่านี้ภายใต้ 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 ทดสอบสำหรับ android.hardware.camera2 API

ค้นหาการทดสอบกล้องเหล่านี้ภายใต้ cts/tests/tests/ :

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

การทดสอบกล้อง CTS Verifier

ค้นหาการทดสอบกล้องเหล่านี้ภายใต้: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

การทดสอบ Image Test Suite (ITS)

การทดสอบ Camera Image Test Suite (ITS) มุ่งเน้นไปที่ความถูกต้องของภาพ ในการทดสอบ ให้รันสคริปต์ Python บนเวิร์กสเตชันโดยที่อุปกรณ์ Android เชื่อมต่อผ่าน USB

กล้องโครงสร้างพื้นฐานและการทดสอบของ บริษัท ตั้งอยู่ใน cts/apps/CameraITS ไดเรกทอรี แต่ละคนอยู่การทดสอบใน tests/scene # ไดเรกทอรีย่อย

การตั้งค่าสภาพแวดล้อมการทดสอบเรียกใช้:
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการตั้งค่าและใช้การทดสอบให้ดูที่ CameraITS ไฟล์ PDF ใน cts/apps/CameraITS ดู tutorial.py ใน tests ไดเรกทอรีย่อยสำหรับคำแนะนำเกี่ยวกับวิธีการใช้สคริปต์ที่

การทดสอบ ITS ต้องใช้สภาพแวดล้อม Linux สำหรับรายละเอียดที่เฉพาะเจาะจงรุ่นหลามจำเป็นต้องเรียกใช้การทดสอบ ITS ดูที่ CameraITS ไฟล์ PDF สำหรับการเปิดตัวหรือยัง บันทึกประจำรุ่น Android 12 สำหรับ Android 12

การติดตั้งแนะนำสำหรับฉากแบบคงที่อธิบายไว้ใน กล้องของหนึ่งในกล่อง การตั้งค่าที่แนะนำสำหรับฉาก sensor_fusion จะอธิบายไว้ใน เซนเซอร์ฟิวชั่นกล่องคู่มือการเริ่มต้น

ในการใช้งาน ITS ด้วยตนเอง ให้เตรียมสภาพแวดล้อมทางกายภาพที่เรียบง่ายโดยมีเป้าหมายเฉพาะที่สามารถนำมาใช้ซ้ำได้ เช่น ผนังสีขาว การ์ดสีเทา และโคมไฟตั้งโต๊ะ ติดตั้งอุปกรณ์ Android บนขาตั้งกล้องและเรียกใช้สคริปต์เพื่อทดสอบการทำงานของกล้อง การทดสอบส่วนใหญ่ผ่านหรือไม่ผ่าน แต่มีตัวชี้วัดบางข้อ

สคริปต์เหล่านี้ทดสอบสถานการณ์ที่ไม่ได้รับการทดสอบใน CTS และเป็นส่วนประกอบที่สำคัญของแผนการทดสอบ HAL 3.2

การทดสอบ ITS ว่าผ่านหรือล้มเหลว การทดสอบที่ได้รับคำสั่งทั้งหมดในแต่ละโฟลเดอร์ฉากต้องผ่าน การทดสอบที่ไม่ได้รับคำสั่งสามารถล้มเหลวและยังคงนับเป็นผ่านใน CtsVerifier

ที่เกิดเหตุและการทดสอบรายละเอียดดู กล้องของการทดสอบ

การทดสอบกรอบงานสื่อ

ผ่านการทดสอบสื่อที่เกี่ยวข้องกับกล้องทั้งหมดใน MediaFrameworkTest โปรดทราบว่าการทดสอบเหล่านี้ต้องมีการติดตั้ง mediaframeworktest.apk บนอุปกรณ์ Android คุณจะต้อง make mediaframeworktest แล้วใช้ adb ในการติดตั้ง .apk ที่เกิด คำสั่งตัวอย่างรวมอยู่ด้านล่าง

เส้นทางเริ่มต้นสำหรับการทดสอบกรอบสื่อกล้องถ่ายภาพที่เกี่ยวข้อง: platform/frameworks/base

ค้นหารหัสแหล่งที่มาสำหรับการทดสอบที่นี่: frameworks/base/media/tests/MediaFrameworkTest

ในการตั้งค่าการทดสอบเหล่านี้:

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

ในกรณีที่ name ตัวแปรหมายถึงไดเรกทอรีที่มีสินค้าของผู้ขาย

ค้นหาการทดสอบทั้งหมดในไดเร็กทอรีต่อไปนี้หรือไดเร็กทอรีย่อย:

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

แต่ละไดเรกทอรีย่อยแสดงถึงคลาสของการทดสอบ:

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

กำลังรันการทดสอบ Media Framework

ดูการทดสอบที่มีอยู่ทั้งหมด::

adb shell pm list instrumentation

สิ่งนี้จะให้ผลลัพธ์ที่คล้ายคลึง:

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)

ระบุและสารสกัดจากส่วนประกอบ (ระหว่าง instrumentation: และ (target=com.android.mediaframeworktest) จากบรรทัดทดสอบแต่ละองค์ประกอบจะประกอบด้วยชื่อแพคเกจเป้าหมาย (. com.android.mediaframeworktest ) และชื่อการทดสอบวิ่ง ( MediaFramework TestRunner MediaFramework TestRunner )

ตัวอย่างเช่น:

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

จากนั้นคุณอาจจะผ่านแต่ละองค์ประกอบจะ adb shell am instrument เช่นดังนั้น:

adb shell am instrument -w component.name

ที่ไหน component.name เท่ากับมูลค่าสกัดดังกล่าวข้างต้น ตัวอย่างเช่น:

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

โปรดทราบว่าแม้ว่าคลาสพาธจะเป็นแพ็กเกจ Java + ชื่อคลาส แต่แพ็กเกจเครื่องมือวัดไม่จำเป็นต้องเหมือนกับแพ็กเกจ Java ตรวจสอบให้แน่ใจว่าคุณใช้แพ็คเกจ AndroidManifest.xml เมื่อทำการต่อชื่อส่วนประกอบ ไม่ใช่แพ็คเกจ Java ที่มีคลาสตัวรันการทดสอบอยู่

ในการรันการทดสอบคลาสเดียว ให้ผ่าน -e class อาร์กิวเมนต์เช่น:

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

เมื่อต้องการเรียกใช้เพียงวิธีการเดียวในชั้นเรียนการทดสอบผนวกปอนด์ (#) เข้าสู่ระบบและชื่อวิธี (ในกรณีนี้ testConnectPro ) เพื่อชื่อชั้นเช่นดังนั้น:

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

การทดสอบการทำงานของการตั้งค่าสื่อ

นี่คือตัวอย่างการทดสอบการใช้งาน การทดสอบนี้จะตรวจสอบการทำงานพื้นฐานของการตั้งค่ากล้องต่างๆ รวมกัน (เช่น แฟลช การเปิดรับแสง WB ฉาก ขนาดภาพ และแท็กพิกัด)

รันคำสั่งทดสอบ:

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

การทดสอบการรวมสื่อ

นี่คือตัวอย่างการรันการทดสอบการรวม ในกรณีนี้ mediaframeworktest/integration/CameraBinderTest.java และ mediaframeworktest/CameraStressTestRunner.java:

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

หากสำเร็จ ผลลัพธ์ที่ได้จะมีลักษณะดังนี้:

-----

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

OK (11 tests)

-----

การทดสอบประสิทธิภาพของสื่อ

การทดสอบหน่วยความจำตัวอย่างนี้จะเปิดขึ้นและปล่อยตัวอย่างกล้อง 200 ครั้ง ในการทำซ้ำ 20 ครั้ง สแน็ปช็อตของ ps mediaserver จะถูกบันทึกและจะเปรียบเทียบการใช้หน่วยความจำที่แตกต่างกันหลังจากทำซ้ำ 200 ครั้ง การทดสอบจะล้มเหลวหากความแตกต่างมากกว่า 150kM

รันคำสั่งทดสอบ:

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

เพิ่มเติมรายละเอียดการส่งออกสามารถพบได้ใน: /sdcard/mediaMemOutput.txt

การทดสอบหน่วยสื่อ

คำสั่งเรียกใช้การทดสอบหน่วยมีความคล้ายคลึงกันทั้งหมด ตัวอย่างเช่น สำหรับ CameraMetadataTest.java คำสั่งจะเป็น:

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

การทดสอบความเครียดของสื่อ

การทดสอบนี้เน้นไปที่การจับภาพกล้องและการบันทึกวิดีโอ

รันคำสั่งทดสอบ:

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

การทดสอบทั้งหมดควรผ่าน

การทดสอบด้วยตนเอง การทดสอบแคม

ควรเรียกใช้แอป TestingCam ด้วยตนเองโดยทำการตรวจสอบต่อไปนี้ แหล่งสำหรับ TestingCam อยู่ที่นี่: pdk/apps/TestingCamera/

อินฟินิตี้โฟกัสพร้อมการเอียงกล้อง

เริ่ม TestingCam เปิดการแสดงตัวอย่าง และตรวจสอบให้แน่ใจว่าโหมดออโต้โฟกัสถูกตั้งค่าเป็นอินฟินิตี้ การใช้ปุ่มภาพถ่ายภาพการจับภาพของวัตถุที่อยู่ไกล (อย่างน้อย 10 เมตรออกไป) ด้วยกล้องชี้แนวนอนขึ้นไป (ใกล้เคียงกับแนวตั้ง) และลดลง (ใกล้เคียงกับแนวตั้ง); ตัวอย่างของการยิงขึ้นด้านบนอาจเป็นใบไม้/กิ่งสูงของต้นไม้จากเบื้องล่าง และตัวอย่างของการยิงลงอาจเป็นถนนที่มองเห็นได้จากหลังคาของอาคาร ในทุกกรณี ตัวแบบที่อยู่ห่างไกลควรมีความคมชัดและอยู่ในโฟกัส บันทึกและดูภาพถ่ายในมุมมองแกลเลอรี่เพื่อให้คุณสามารถซูมเข้าและตรวจสอบความคมชัดได้ง่ายขึ้น

โปรดทราบว่าสำหรับกล้องที่มีแอคชูเอเตอร์ VCM เพื่อผ่านการทดสอบนี้ จะต้องมีระบบควบคุม AF แบบวงปิด หรือจะต้องแก้ไข SW บางประเภทตามการใช้ข้อมูลมาตรความเร่งเพื่อกำหนดการวางแนวของกล้อง จำเป็นต้องมีการปรับเทียบตำแหน่งอินฟินิตี้ของเลนส์จากโรงงานที่เชื่อถือได้

การทดสอบด้วยตนเองการทดสอบCam2

ควรเรียกใช้แอป TestingCam2 ด้วยตนเอง โดยทำการตรวจสอบดังต่อไปนี้ แหล่งสำหรับ TestingCam2 อยู่ที่นี่: pdk/apps/TestingCamera2/

จับภาพ JPEG

เริ่มต้น TestingCam2 และกดปุ่ม JPEG ภาพที่ปรากฏทางด้านขวาของภาพในช่องมองภาพควรปรากฏเหมือนกับช่องมองภาพ รวมทั้งมีการวางแนวเดียวกัน