Trang này liệt kê tất cả các kiểm thử có sẵn để đánh giá lớp trừu tượng phần cứng (HAL) của camera Android. Đây là tài liệu dành cho các nhà sản xuất thiết bị gốc (OEM) và nhà cung cấp bộ xử lý ứng dụng (AP) để họ có thể đảm bảo việc triển khai HAL camera đúng cách với số lượng lỗi tối thiểu. Mặc dù đây là một bổ sung không bắt buộc cho Bộ kiểm tra tính tương thích (CTS) với Android, nhưng nó giúp tăng đáng kể phạm vi kiểm thử camera và chắc chắn sẽ xác định được các lỗi tiềm ẩn.
Bằng cách vượt qua các bài kiểm tra này, OEM xác thực xem họ đã tích hợp đúng 3 giao diện lớp trừu tượng phần cứng (HAL) của camera Android hay chưa. Khi tuân thủ tất cả các mục trong danh sách kiểm tra, một hoạt động triển khai thiết bị có thể được coi là đầy đủ đối với các giao diện Android Camera HAL. Nhờ đó, thiết bị có thể hỗ trợ đúng gói
android.hardware.camera2
mà các ứng dụng camera dựa vào.
Quy cách HAL3 của camera
Quy cách Android Camera HAL3 là nguồn thông tin chính thức về những yêu cầu mà thiết bị phải đáp ứng; trang này cung cấp thông tin tóm tắt về tất cả các bài kiểm thử có thể dùng làm danh sách kiểm tra. Các đơn vị triển khai HAL camera (ví dụ: nhà cung cấp AP) nên xem xét kỹ từng dòng trong quy cách HAL3 camera và đảm bảo thiết bị của họ tuân thủ quy cách này.
Quy cách HAL hiện tại được xác định trong các tệp này trong Android 5.0 trở lên và Android Platform Development Kit (PDK) chung:
- Giao diện và thông số kỹ thuật Camera HAL 3.x:
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- Quy cách siêu dữ liệu Camera HAL 3.x:
system/media/camera/docs/docs.html
- Giao diện và thông số kỹ thuật định dạng pixel HAL:
system/core/libsystem/include/system/graphics.h
Các loại kiểm thử camera
Sau đây là các loại kiểm thử chính có sẵn cho camera Android mới nhất, cùng với thông tin tham khảo về các hướng dẫn liên quan bên dưới:
- Bộ kiểm thử của nhà cung cấp (VTS): Các kiểm thử trực tiếp kiểm thử giao diện HAL của camera
- Bộ kiểm tra tính tương thích (CTS): Các kiểm thử Android tiêu chuẩn, tự động để đảm bảo khả năng tương thích của thiết bị. Để biết thêm thông tin, hãy xem phần Bộ kiểm tra tính tương thích và Tổng quan về Trade Federation.
- Bộ kiểm thử hình ảnh (ITS): Chạy kiểm thử theo cách thủ công để đảm bảo hình ảnh chính xác. Để biết thêm thông tin chi tiết, hãy xem Camera ITS.
- Kiểm thử thủ công các kiểm thử Cam:
Chạy từ nguồn trong
pdk/apps/TestingCamera/
- Kiểm thử thủ công Cam2.1: Chạy từ nguồn trong
pdk/apps/TestingCamera2/
Tất cả các loại kiểm thử này đều được mô tả chi tiết bên dưới. Các bài kiểm thử này được trình bày theo thứ tự thời gian mà các OEM dự kiến sẽ thực hiện.
Ví dụ: nếu không vượt qua được các kiểm thử gốc, thì chắc chắn thiết bị sẽ không vượt qua được các kiểm thử Bộ kiểm thử tính tương thích (CTS) tiếp theo. Và nếu một thiết bị không vượt qua CTS, thì việc chuyển sang Bộ kiểm thử hình ảnh (ITS) sẽ không có nhiều tác dụng. Bạn nên giải quyết các lỗi trong từng loại kiểm thử trước khi chuyển sang bộ kiểm thử tiếp theo.
Các kiểm thử trong Bộ kiểm thử của nhà cung cấp (VTS)
Bộ kiểm thử của nhà cung cấp Android (VTS) là một bộ kiểm thử hoạt động ở cấp giao diện HIDL. Để biết thêm thông tin về cách sử dụng VTS, hãy xem phần Bộ kiểm thử của nhà cung cấp.
Các bài kiểm thử của Bộ kiểm tra tính tương thích (CTS)
Bộ kiểm tra tính tương thích (CTS) của camera trên Android tập trung vào khả năng tương thích của thiết bị. Để biết thông tin về cách thiết lập môi trường kiểm thử, hãy xem phần Thiết lập CTS.
Đường dẫn bắt đầu cho các kiểm thử CTS của camera là: platform/cts
.
Khi chạy CTS camera cho các thiết bị hỗ trợ camera bên ngoài (chẳng hạn như webcam USB), bạn phải cắm một thiết bị khi chạy CTS, nếu không, các kiểm thử sẽ tự động thất bại. Ví dụ về camera bên ngoài: Logitech HD Pro Webcam C920 và Microsoft LifeCam HD-3000.
Hãy xem giới thiệu về CTS và các trang con của CTS để biết hướng dẫn chung về cách chạy CTS.
Các kiểm thử CTS cho API android.hardware.Camera
Bạn có thể tìm thấy các bài kiểm thử camera này trong 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
Các kiểm thử CTS cho API android.hardware.camera2
Bạn có thể tìm thấy các bài kiểm thử camera này trong cts/tests/tests/
:
hardware/src/android/hardware/camera2/cts/*
permission/src/android/permission/cts/Camera2PermissionTest.java
Các bài kiểm thử camera của Trình xác minh CTS
Bạn có thể tìm thấy các bài kiểm thử camera này trong phần:
cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*
Các kiểm thử trong Bộ kiểm thử hình ảnh (ITS)
Bộ kiểm thử hình ảnh của camera (ITS) tập trung vào độ chính xác của hình ảnh. Để thực hiện các kiểm thử, hãy chạy tập lệnh Python trên một máy trạm có thiết bị Android được kết nối qua USB.
Cơ sở hạ tầng và các bài kiểm thử ITS của camera nằm trong thư mục
cts/apps/CameraITS
.
Mỗi kiểm thử nằm trong một thư mục con tests/scene#
.
Để biết thêm thông tin về cách thiết lập và chạy các kiểm thử, hãy xem phần Camera ITS.
Để biết nội dung mô tả về cảnh và quy trình kiểm thử, hãy xem bài viết Các quy trình kiểm thử ITS của camera.
Các bài kiểm thử ITS đều đạt hoặc không đạt. Tất cả các bài kiểm thử bắt buộc trong mỗi thư mục cảnh đều phải vượt qua.
Những kiểm thử không bắt buộc có thể không thành công nhưng vẫn được tính là đã vượt qua trong CtsVerifier
.
Các bài kiểm thử ITS kiểm thử những tình huống không được kiểm thử trong CTS và là một thành phần quan trọng của kế hoạch kiểm thử HAL 3.2.
Kiểm thử Khung đa phương tiện
Vượt qua tất cả các bài kiểm thử nội dung nghe nhìn liên quan đến camera trong MediaFrameworkTest. Xin lưu ý rằng các kiểm thử này yêu cầu bạn cài đặt mediaframeworktest.apk trên thiết bị Android. Bạn sẽ cần make mediaframeworktest
rồi dùng adb để cài đặt tệp .apk thu được. Các lệnh mẫu được trình bày bên dưới.
Đường dẫn bắt đầu cho các kiểm thử khung đa phương tiện liên quan đến Camera là:
platform/frameworks/base
Tìm mã nguồn cho các kiểm thử tại đây: frameworks/base/media/tests/MediaFrameworkTest
Cách thiết lập các kiểm thử này:
make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk
Trong đó, biến name biểu thị thư mục chứa sản phẩm của nhà cung cấp.
Tìm tất cả các kiểm thử trong thư mục sau hoặc các thư mục con của thư mục đó:
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
Mỗi thư mục con đại diện cho một lớp kiểm thử:
functional/
integration/
performance/
power/
stress/
unit/
Chạy kiểm thử Khung đa phương tiện
Cách xem tất cả các thử nghiệm có sẵn::
adb shell pm list instrumentation
Điều này sẽ mang lại kết quả tương tự như sau:
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)
Xác định và trích xuất thành phần (giữa instrumentation:
và (target=com.android.mediaframeworktest)
) từ mỗi dòng kiểm thử.
Thành phần này bao gồm tên gói mục tiêu (com.android.mediaframeworktest
) và tên trình chạy kiểm thử (MediaFramework
).
Ví dụ:
com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner com.android.mediaframeworktest/.MediaRecorderStressTestRunner com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
Sau đó, bạn có thể truyền từng thành phần đến adb shell am instrument
như sau:
adb shell am instrument -w component.name
Trong đó component.name
bằng với giá trị đã trích xuất ở trên. Ví dụ:
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Xin lưu ý rằng mặc dù đường dẫn lớp là gói Java + tên lớp, nhưng gói đo lường không nhất thiết phải giống với gói Java. Đảm bảo bạn sử dụng gói AndroidManifest.xml khi nối tên thành phần, chứ không phải gói Java chứa lớp chạy kiểm thử.
Để chạy một lớp kiểm thử duy nhất, hãy truyền đối số -e class
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Để chỉ chạy một phương thức trong một lớp kiểm thử, hãy thêm dấu thăng (#) và tên phương thức (trong trường hợp này là testConnectPro
) vào tên lớp, như sau:
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Kiểm thử chức năng của chế độ cài đặt nội dung nghe nhìn
Dưới đây là ví dụ về một lần chạy kiểm thử chức năng. Thử nghiệm này xác minh chức năng cơ bản của nhiều tổ hợp chế độ cài đặt camera. (tức là Đèn flash, độ phơi sáng, cân bằng trắng, cảnh, kích thước ảnh và thẻ địa lý)
Chạy lệnh kiểm thử:
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
Kiểm thử tích hợp nội dung nghe nhìn
Sau đây là ví dụ về một lần chạy kiểm thử tích hợp, trong trường hợp này là mediaframeworktest/integration/CameraBinderTest.java và mediaframeworktest/CameraStressTestRunner.java:
adb shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'
Nếu thành công, kết quả sẽ tương tự như sau:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
Kiểm thử hiệu suất nội dung nghe nhìn
Thử nghiệm bộ nhớ xem trước này sẽ mở và phát hành bản xem trước của camera 200 lần. Trong mỗi 20 lần lặp lại, ảnh chụp nhanh của mediaserver ps sẽ được ghi lại và so sánh mức sử dụng bộ nhớ khác nhau sau 200 lần lặp lại. Thử nghiệm sẽ thất bại nếu khoảng cách lớn hơn 150 km.
Chạy lệnh kiểm thử:
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
Bạn có thể xem thêm thông tin chi tiết trong:
/sdcard/mediaMemOutput.txt
Kiểm thử đơn vị nội dung nghe nhìn
Các lệnh chạy kiểm thử đơn vị đều tương tự nhau. Ví dụ: đối với CameraMetadataTest.java, lệnh sẽ là:
adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
Kiểm thử hiệu suất nội dung nghe nhìn
Bài kiểm thử này nhằm kiểm tra khả năng chụp ảnh và quay video của camera.
Chạy lệnh kiểm thử:
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
Tất cả các kiểm thử đều phải vượt qua.
Kiểm thử thủ công Kiểm thử TestingCam
Bạn phải chạy ứng dụng TestingCam theo cách thủ công và thực hiện các bước kiểm tra sau.
Nguồn cho TestingCam có tại đây: pdk/apps/TestingCamera/
Lấy nét vô cực khi nghiêng camera
Khởi động TestingCam, bật chế độ xem trước và đảm bảo chế độ lấy nét tự động được đặt thành vô cực. Dùng nút Chụp ảnh để chụp ảnh các đối tượng ở xa (tối thiểu 10 m) khi camera hướng ngang, hướng lên (gần như thẳng đứng) và hướng xuống (gần như thẳng đứng); ví dụ về ảnh chụp hướng lên có thể là lá/cành cây ở trên cao từ bên dưới và ví dụ về ảnh chụp hướng xuống có thể là đường phố nhìn từ mái nhà. Trong mọi trường hợp, đối tượng ở xa phải sắc nét và rõ nét. Lưu và xem các bức ảnh ở chế độ xem thư viện để bạn có thể phóng to và kiểm tra độ sắc nét dễ dàng hơn.
Xin lưu ý rằng để vượt qua bài kiểm tra này, camera có bộ truyền động VCM sẽ cần hệ thống điều khiển AF vòng kín hoặc cần một số loại hiệu chỉnh phần mềm dựa trên việc sử dụng dữ liệu gia tốc kế để xác định hướng camera. Bạn cũng cần phải hiệu chỉnh vị trí vô cực của ống kính một cách đáng tin cậy tại nhà máy.
Kiểm thử thủ công các bài kiểm thử TestingCam2
Bạn phải chạy ứng dụng TestingCam2 theo cách thủ công và thực hiện các bước kiểm tra sau. Nguồn cho TestingCam2 nằm ở đây: pdk/apps/TestingCamera2/
Chụp ảnh JPEG
Khởi động TestingCam2 rồi nhấn vào nút JPEG. Hình ảnh xuất hiện ở bên phải hình ảnh trong kính ngắm phải giống với kính ngắm, kể cả hướng.