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

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

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

ข้อกําหนดของ HAL3 ของกล้อง

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

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

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

การทดสอบประเภทหลักๆ ที่มีให้สำหรับกล้อง Android เวอร์ชันล่าสุดมีดังนี้ พร้อมทั้งลิงก์ไปยังวิธีการที่เกี่ยวข้องด้านล่าง

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

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

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

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

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

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

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

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

ดูข้อมูลเบื้องต้นเกี่ยวกับ CTS และหน้าย่อยของ 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

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่าและทำการทดสอบได้ที่ 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/

เรียกใช้การทดสอบเฟรมเวิร์กสื่อ

วิธีดูการทดสอบทั้งหมดที่ใช้ได้

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) และชื่อตัวดำเนินการทดสอบ (MediaFrameworkTestRunner)

เช่น

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 ฉาก ขนาดรูปภาพ และแท็กภูมิศาสตร์)

เรียกใช้คําสั่งทดสอบ

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 ครั้ง การทดสอบจะ ไม่สำเร็จหากความต่างมากกว่า 150 กม.

เรียกใช้คําสั่งทดสอบ

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 ด้วยตนเองโดยได้ดำเนินการตรวจสอบดังต่อไปนี้ แหล่งที่มาของ TestingCam มีดังนี้ pdk/apps/TestingCamera/

โฟกัสที่ระยะอนันต์ด้วยการเอียงกล้อง

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

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

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

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

จับภาพ JPEG

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