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

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

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

ข้อมูลจำเพาะของกล้อง HAL3

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

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

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

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

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

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

การทดสอบชุดทดสอบผู้ขาย (VTS)

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

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

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

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

เมื่อใช้งานกล้อง CTS สำหรับอุปกรณ์ที่รองรับกล้องภายนอก (เช่น เว็บแคม USB) คุณต้องเสียบอุปกรณ์ไว้เมื่อใช้งาน CTS ไม่เช่นนั้นการทดสอบจะล้มเหลวโดยอัตโนมัติ ตัวอย่างของกล้องภายนอก ได้แก่: Logitech HD Pro Webcam C920 และ Microsoft 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/*

การทดสอบชุดทดสอบรูปภาพ (ITS)

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการตั้งค่าและรันการทดสอบ โปรดดูที่ Camera ITS

สำหรับคำอธิบายฉากและการทดสอบ โปรดดูที่ การทดสอบ ITS ของกล้อง

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

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

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

ผ่านการทดสอบสื่อที่เกี่ยวข้องกับกล้องทั้งหมดใน 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 อาร์กิวเมนต์เช่นนั้น:

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 ฉาก ขนาดภาพ และ geoTag)

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

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

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

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

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

โฟกัสแบบอินฟินิตี้ด้วยการเอียงกล้อง

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

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

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

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

การจับภาพ JPEG

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