ทดสอบ HAL ของกล้อง

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

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

ข้อกำหนด HAL3 ของกล้อง

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

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

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

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

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

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

การทดสอบชุดทดสอบของผู้ให้บริการ (VTS)

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

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

การทดสอบชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของกล้อง Android มุ่งเน้นไปที่ความเข้ากันได้ของอุปกรณ์ ดูข้อมูลเกี่ยวกับการตั้งค่าสภาพแวดล้อมการทดสอบได้ที่การตั้งค่า 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

คุณจะดูการทดสอบกล้องเหล่านี้ได้ที่ส่วนต่อไปนี้ 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

การทดสอบ Media Framework

ผ่านการทดสอบสื่อทั้งหมดที่เกี่ยวข้องกับกล้องใน 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) และชื่อโปรแกรมเรียกใช้การทดสอบ (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 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 ครั้ง การทดสอบจะ ล้มเหลวหากความแตกต่างมากกว่า 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

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

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

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

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

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

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

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

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

การจับภาพ JPEG

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