หน้านี้แสดงการทดสอบทั้งหมดที่พร้อมใช้งานสำหรับการประเมินเลเยอร์การจัดการฮาร์ดแวร์โดยตรง (HAL) ของกล้อง Android โดยมีไว้สำหรับผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) และผู้ให้บริการแอปพลิเคชัน โปรเซสเซอร์ (AP) เพื่อให้มั่นใจว่ามีการใช้งาน HAL ของกล้องอย่างเหมาะสมโดยมีข้อบกพร่องน้อยที่สุด แม้ว่าการเพิ่มนี้จะเป็นการเพิ่มโดยสมัครใจในชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android แต่ก็ช่วยเพิ่มความครอบคลุมของการทดสอบกล้องได้อย่างมากและ จะช่วยระบุข้อบกพร่องที่อาจเกิดขึ้นได้อย่างแน่นอน
การผ่านการทดสอบเหล่านี้ช่วยให้ OEM ตรวจสอบได้ว่าได้ผสานรวมอินเทอร์เฟซของ Android
Hardware
Abstraction Layer (HAL) 3 ของกล้องอย่างถูกต้องหรือไม่ เมื่อเป็นไปตามรายการทั้งหมดใน
รายการตรวจสอบ การติดตั้งใช้งานอุปกรณ์อาจถือว่าสมบูรณ์ตาม
อินเทอร์เฟซ HAL ของกล้อง Android ซึ่งจะช่วยให้อุปกรณ์รองรับแพ็กเกจ
android.hardware.camera2 ที่แอปกล้องสร้างขึ้นได้อย่างเหมาะสม
ข้อกำหนด HAL3 ของกล้อง
ข้อกำหนด Android Camera HAL3 เป็นแหล่งข้อมูลที่เชื่อถือได้ เกี่ยวกับอุปกรณ์ที่ต้องเป็นไปตามข้อกำหนด หน้านี้จะสรุป การทดสอบทั้งหมดที่ใช้เป็นรายการตรวจสอบได้ ผู้ใช้ HAL ของกล้อง (เช่น ผู้ให้บริการ AP) ควรตรวจสอบข้อกำหนดของ HAL3 ของกล้องทีละบรรทัดและตรวจสอบว่าอุปกรณ์ของตนเป็นไปตามข้อกำหนดดังกล่าว
ข้อกำหนด HAL ปัจจุบันมีการกำหนดไว้ในไฟล์เหล่านี้ภายใน Android 5.0 และชุดพัฒนาแพลตฟอร์ม Android (PDK) ทั่วไปที่ใหม่กว่า
- อินเทอร์เฟซและข้อกำหนดของ Camera HAL 3.x:
hardware/libhardware/include/hardware/camera3.h,hardware/libhardware/include/hardware/camera_common.h - ข้อกำหนดข้อมูลเมตาของ Camera HAL 3.x:
system/media/camera/docs/docs.html - อินเทอร์เฟซและข้อมูลจำเพาะของรูปแบบพิกเซล HAL:
system/core/libsystem/include/system/graphics.h
ประเภทการทดสอบกล้อง
ประเภทการทดสอบหลักที่ใช้ได้กับกล้อง Android เวอร์ชันล่าสุดมีดังนี้ พร้อมการอ้างอิงถึงวิธีการที่เกี่ยวข้องด้านล่าง
- ชุดทดสอบของผู้ให้บริการ (VTS): การทดสอบที่ทดสอบอินเทอร์เฟซ HAL ของกล้องโดยตรง
- ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS): การทดสอบ Android มาตรฐานแบบอัตโนมัติ เพื่อให้มั่นใจว่าอุปกรณ์มีความเข้ากันได้ โปรดดูรายละเอียดเพิ่มเติมที่ ชุดเครื่องมือทดสอบความเข้ากันได้และ ภาพรวมของ Trade Federation
- ชุดทดสอบรูปภาพ (ITS): เรียกใช้การทดสอบด้วยตนเอง เพื่อให้แน่ใจว่ารูปภาพถูกต้อง ดูรายละเอียดเพิ่มเติมได้ที่ ITS ของกล้อง
- การทดสอบด้วยตนเอง - การทดสอบกล้อง:
เรียกใช้จากแหล่งที่มาใน
pdk/apps/TestingCamera/ - การทดสอบด้วยตนเองCam2.1
tests: เรียกใช้จากแหล่งที่มาใน
pdk/apps/TestingCamera2/
เราจะอธิบายรายละเอียดการทดสอบแต่ละประเภทด้านล่าง การทดสอบเหล่านี้จะ แสดงตามลำดับเวลาที่คาดว่า OEM จะดำเนินการ
เช่น หากอุปกรณ์ไม่ผ่านการทดสอบดั้งเดิม อุปกรณ์จะไม่ผ่านการทดสอบชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ในภายหลังอย่างแน่นอน และหากอุปกรณ์ไม่ผ่าน CTS ก็ไม่จำเป็นต้องดำเนินการต่อเพื่อใช้ชุดเครื่องมือทดสอบรูปภาพ (ITS) เราขอแนะนําให้ แก้ไขข้อผิดพลาดในการทดสอบแต่ละประเภทก่อนดําเนินการทดสอบชุดถัดไป
การทดสอบ Vendor Test Suite (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.javahardware/src/android/hardware/cts/CameraGLTest.javahardware/src/android/hardware/cts/Camera_SizeTest.javapermission/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
การทดสอบ Media Framework
ผ่านการทดสอบสื่อทั้งหมดที่เกี่ยวข้องกับกล้องใน MediaFrameworkTest โปรดทราบว่าการทดสอบเหล่านี้ต้องติดตั้ง mediaframeworktest.apk ในอุปกรณ์ Android
คุณจะต้อง make mediaframeworktest จากนั้นใช้ adb
เพื่อติดตั้ง .apk ที่ได้ ตัวอย่างคำสั่งมีดังนี้
เส้นทางการเริ่มต้นสำหรับการทดสอบเฟรมเวิร์กสื่อที่เกี่ยวข้องกับกล้องคือ
platform/frameworks/base
ดูซอร์สโค้ดสำหรับการทดสอบได้ที่นี่
frameworks/base/media/tests/MediaFrameworkTest
วิธีตั้งค่าการทดสอบเหล่านี้
make mediaframeworktestadb 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)
เช่น
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
การทดสอบทั้งหมดควรผ่าน
การทดสอบด้วยตนเอง
คุณควรเรียกใช้แอป TestingCam ด้วยตนเองพร้อมทำการตรวจสอบต่อไปนี้
แหล่งที่มาของ TestingCam อยู่ที่นี่ pdk/apps/TestingCamera/
โฟกัสที่ระยะอนันต์เมื่อกล้องเอียง
เริ่ม TestingCam เปิดตัวอย่าง และตรวจสอบว่าตั้งค่าโหมดโฟกัสอัตโนมัติเป็น อินฟินิตี้ ใช้ปุ่มถ่ายรูปเพื่อถ่ายภาพ วัตถุที่อยู่ไกล (อย่างน้อย 10 ม.) โดยหันกล้องในแนวนอน ขึ้น (ใกล้กับแนวตั้ง) และลง (ใกล้กับแนวตั้ง) ตัวอย่าง ภาพที่ถ่ายขึ้นอาจเป็นใบไม้/กิ่งไม้สูงๆ ของต้นไม้จากด้านล่าง และตัวอย่าง ภาพที่ถ่ายลงอาจเป็นถนนที่มองจากหลังคาของ อาคาร ในทุกกรณี วัตถุที่อยู่ไกลควรคมชัดและที่โฟกัส บันทึก และดูช็อตในมุมมองแกลเลอรีเพื่อให้คุณซูมเข้าและตรวจสอบ ความคมชัดได้ง่ายขึ้น
โปรดทราบว่ากล้องที่มีตัวกระตุ้น VCM จะต้องมีระบบควบคุม AF แบบวงปิดหรือต้องมีการแก้ไข SW บางอย่างโดยอิงตามการใช้ข้อมูลจากตัวตรวจวัดความเร่งเพื่อกำหนดการวางแนวกล้องจึงจะผ่านการทดสอบนี้ นอกจากนี้ยังต้องมีการปรับเทียบตำแหน่งอินฟินิตี้ของเลนส์จากโรงงานที่เชื่อถือได้ด้วย
การทดสอบด้วยตนเองCam2
คุณควรเรียกใช้แอป TestingCam2 ด้วยตนเองและตรวจสอบสิ่งต่อไปนี้
แหล่งที่มาของ TestingCam2 อยู่ที่นี่: pdk/apps/TestingCamera2/
การจับภาพ JPEG
เริ่ม TestingCam2 แล้วกดปุ่ม JPEG รูปภาพ ที่ปรากฏทางด้านขวาของรูปภาพช่องมองภาพควรปรากฏเหมือนกับ ช่องมองภาพ รวมถึงมีการวางแนวเดียวกัน