หน้านี้จะแสดงการทดสอบทั้งหมดที่มีสำหรับการประเมินกล้อง Android ชั้นแอบสแตรกชันของฮาร์ดแวร์ (HAL) มีไว้สำหรับอุปกรณ์ดั้งเดิม ผู้ผลิต (OEM) และการใช้งาน ผู้ให้บริการประมวลผล (AP) เพื่อให้สามารถตรวจสอบว่าได้ใช้งานกล้องอย่างถูกต้อง HAL ที่มีข้อบกพร่องขั้นต่ำ แม้ว่านี่จะเป็นการเพิ่ม ผลิตภัณฑ์ Android นี้โดยสมัครใจ ความเข้ากันได้ Test Suite (CTS) ช่วยเพิ่มความครอบคลุมของการทดสอบกล้องได้อย่างมากและ ก็จะสามารถระบุข้อบกพร่องได้อย่างแน่นอน
การผ่านการทดสอบเหล่านี้จะช่วยให้ OEM ตรวจสอบ
ไม่ว่าพวกเขาจะผสานรวม Android
ฮาร์ดแวร์กล้อง
อินเทอร์เฟซ Abstractionion Layer (HAL) 3 เมื่อปฏิบัติตามรายการทั้งหมดใน
การตรวจสอบการติดตั้งใช้งานอุปกรณ์ อาจถือว่าสมบูรณ์ในแง่ของ
ไปยังอินเทอร์เฟซ HAL ของกล้อง Android ซึ่งจะทำให้อุปกรณ์
สนับสนุน
android.hardware.camera2
แพ็กเกจที่
แอปกล้องที่สร้างขึ้นมา
ข้อมูลจำเพาะ HAL3 ของกล้อง
ข้อกำหนดเกี่ยวกับ HAL3 ของกล้อง Android เป็นแหล่งข้อมูลที่เชื่อถือได้ของ ข้อมูลว่าอุปกรณ์ใดต้องเป็นไปตาม หน้านี้มีสรุป ของการทดสอบทั้งหมดที่สามารถใช้เป็นรายการตรวจสอบ ผู้ติดตั้งใช้งาน HAL ของกล้อง (เช่น AP ควรตรวจสอบคุณสมบัติ HAL3 ของกล้องทีละบรรทัดและตรวจสอบว่า ที่สอดคล้อง
ข้อกำหนด HAL ปัจจุบันกำหนดไว้ในไฟล์เหล่านี้ภายใน Android ชุดเครื่องมือการพัฒนาแพลตฟอร์ม Android (PDK) ทั่วไป 5.0 ขึ้นไป):
- อินเทอร์เฟซและข้อมูลจำเพาะสำหรับกล้อง HAL 3.x:
hardware/libhardware/include/hardware/camera3.h
hardware/libhardware/include/hardware/camera_common.h
- ข้อกำหนดข้อมูลเมตา HAL 3.x ของกล้อง:
system/media/camera/docs/docs.html
- อินเทอร์เฟซและข้อมูลจำเพาะของรูปแบบพิกเซล HAL:
system/core/libsystem/include/system/graphics.h
ประเภทการทดสอบกล้อง
การทดสอบประเภทหลักๆ ที่พร้อมใช้งานสำหรับกล้อง Android รุ่นล่าสุดมีดังนี้ พร้อมทั้งการอ้างอิงถึงวิธีการที่เกี่ยวข้องด้านล่าง
- ชุดทดสอบของผู้ให้บริการ (VTS): การทดสอบที่ทดสอบแท็ก อินเทอร์เฟซ HAL ของกล้อง
- ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS): Android มาตรฐานที่ทำงานอัตโนมัติ เพื่อตรวจดูว่าสามารถใช้งานร่วมกันได้ ดูรายละเอียดเพิ่มเติมได้ที่ ชุดเครื่องมือทดสอบความเข้ากันได้ และ สหพันธ์การค้า ภาพรวม
- ชุดทดสอบรูปภาพ (ITS): เรียกใช้ด้วยตนเอง ทดสอบความถูกต้องของรูปภาพ ดูรายละเอียดเพิ่มเติมได้ที่ กล้องไอที
- การทดสอบ TestingCam ด้วยตนเอง
เรียกใช้จากต้นทางใน
pdk/apps/TestingCamera/
- การทดสอบด้วยตนเองCam2.1
การทดสอบ: เรียกใช้จากต้นทางใน
pdk/apps/TestingCamera2/
รายละเอียดการทดสอบประเภทต่างๆ เหล่านี้มีดังต่อไปนี้ การทดสอบเหล่านี้ แสดงตามลำดับเวลาที่คาดว่าจะดำเนินการ 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 สำหรับ
API ของ android.hardware.Camera
ดูการทดสอบกล้องเหล่านี้ได้ในส่วน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 สำหรับ
API ของ android.hardware.camera2
ดูการทดสอบกล้องเหล่านี้ได้ในส่วน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 ของกล้อง
ทางไอทีจะผ่านหรือไม่ผ่าน การทดสอบตามคำสั่งทั้งหมดในแต่ละโฟลเดอร์ฉากต้องผ่าน
การทดสอบที่ไม่มีข้อบังคับอาจล้มเหลวและยังคงนับเป็น "ผ่าน"
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
) และชื่อผู้ดำเนินการทดสอบ
(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
การทดสอบการทำงานของการตั้งค่าสื่อ
ต่อไปนี้เป็นตัวอย่างการทดสอบการทำงาน การทดสอบนี้จะยืนยันพื้นฐานของ ฟังก์ชันการตั้งค่ากล้องแบบต่างๆ (เช่น Flash, การรับแสง, 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 ครั้ง ระบบจะบันทึกสแนปชอตของ Mediaserver ของ ps และจะเปรียบเทียบการใช้งานหน่วยความจำที่แตกต่างกันหลังทำซ้ำ 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 อยู่ที่นี่ pdk/apps/TestingCamera2/
จับภาพ JPEG
เริ่ม TestingCam2 แล้วกดปุ่ม JPEG รูปภาพ ที่ปรากฏทางด้านขวาของภาพในช่องมองภาพควรปรากฏเหมือนกับ ช่องมองภาพ รวมถึงการมีแนวการวางแบบเดียวกัน