Danh sách kiểm tra lớp trừu tượng phần cứng (HAL) cho máy ảnh

Trang này liệt kê tất cả các bài kiểm thử có sẵn để đánh giá lớp trừu tượng phần cứng (HAL) của máy ảnh Android. API này 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 triển khai lớp trừu tượng phần cứng (HAL) cho máy ảnh đúng cách với số lượng lỗi tối thiểu. Mặc dù đây là phần bổ sung tự nguyện cho Bộ kiểm thử tính tương thích với Android (CTS), nhưng phần này giúp tăng đáng kể phạm vi kiểm thử máy ảnh 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 thử này, OEM sẽ xác thực xem đã tích hợp đúng cách giao diện lớp trừu tượng phần cứng máy ảnh Android (HAL) 3 hay chưa. Khi tuân thủ tất cả các mục trong danh sách kiểm tra, việc triển khai thiết bị có thể được coi là đầy đủ đối với giao diện HAL (Lớp trừu tượng phần cứng) cho máy ảnh trên Android. Điều này sẽ giúp thiết bị hỗ trợ đúng cách gói android.hardware.camera2 mà các ứng dụng máy ảnh xây dựng dựa trên đó.

Thông số kỹ thuật của Camera HAL3

Thông số kỹ thuật 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 bản 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. Những người triển khai HAL cho máy ảnh (ví dụ: nhà cung cấp AP) nên xem từng dòng trong bản đặc tả HAL3 cho máy ảnh và đảm bảo thiết bị của họ tuân thủ bản đặc tả đó.

Thông số kỹ thuật HAL hiện tại được xác định trong các tệp này trong Bộ phát triển nền tảng Android (PDK) chung Android 5.0 trở lên:

Các loại kiểm thử máy ảnh

Sau đây là các loại kiểm thử chính có sẵn cho máy ảnh Android mới nhất cùng với các tài liệu tham khảo về hướng dẫn liên quan ở bên dưới:

Tất cả các loại kiểm thử này được mô tả chi tiết ở bên dưới. Các chương trình kiểm thử này được trình bày theo thứ tự thời gian mà nhà sản xuất thiết bị gốc (OEM) dự kiến sẽ thực thi.

Ví dụ: nếu một thiết bị không vượt qua được các kiểm thử gốc, thì thiết bị đó chắc chắn sẽ không vượt qua được các lượt kiểm thử Bộ kiểm tra tính tương thích (CTS) tiếp theo. Và nếu một thiết bị không vượt qua được CTS, thì việc tiếp tục sử dụng Bộ kiểm thử hình ảnh (ITS) sẽ không mang lại nhiều lợi ích. 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 nhóm kiểm thử tiếp theo.

Kiểm thử Bộ kiểm thử nhà cung cấp (VTS)

Bộ kiểm thử 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 bài viết Bộ kiểm thử nhà cung cấp.

Các bài kiểm thử của Bộ kiểm tra tính tương thích (CTS)

Các bài kiểm thử trong Bộ kiểm tra tính tương thích với Android (CTS) cho máy ảnh 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 bài viết Thiết lập CTS.

Đường dẫn bắt đầu cho các kiểm thử CTS của máy ảnh là: platform/cts.

Khi chạy CTS máy ảnh cho các thiết bị hỗ trợ máy ảnh bên ngoài (chẳng hạn như webcam USB), bạn phải cắm thiết bị khi chạy CTS, nếu không các bài kiểm thử sẽ tự động không đạt. Ví dụ về các máy ảnh bên ngoài bao gồm: Webcam Logitech HD Pro C920Microsoft LifeCam HD-3000.

Hãy xem giới thiệu về CTS và các trang con của bài viết này để biết hướng dẫn chung về cách chạy CTS.

Kiểm thử CTS cho API android.hardware.Camera

Tìm các chương trình kiểm thử máy ảnh 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

Kiểm thử CTS cho API android.hardware.camera2

Tìm các chương trình kiểm thử máy ảnh này trong cts/tests/tests/:

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

Kiểm thử máy ảnh bằng CTS Verifier

Bạn có thể tìm thấy các bài kiểm thử máy ảnh này trong: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Các bài kiểm thử Bộ kiểm tra hình ảnh (ITS)

Các kiểm thử trong Bộ kiểm thử hình ảnh máy ảnh (ITS) tập trung vào độ chính xác của hình ảnh. Để thực hiện kiểm thử, hãy chạy tập lệnh Python trên máy trạm có thiết bị Android được kết nối qua USB.

Cơ sở hạ tầng và kiểm thử ITS của Camera nằm trong thư mục cts/apps/CameraITS. Mỗi bà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 chương trình kiểm thử, hãy xem phần Camera ITS.

Để biết nội dung mô tả cảnh và kiểm thử, hãy xem phần Kiểm thử ITS của máy ảnh.

Kiểm thử ITS có thể đạ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. Các bài kiểm thử không bắt buộc có thể không đạt nhưng vẫn được tính là đạt trong CtsVerifier.

ITS kiểm thử các trường hợp kiểm thử 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 nội dung nghe nhìn

Vượt qua tất cả các bài kiểm thử nội dung đa phương tiện liên quan đến máy ảnh trong MediaFrameworkTest. Xin lưu ý rằng các kiểm thử này yêu cầu bạn phải cài đặt mediaframeworktest.apk trên thiết bị Android. Bạn sẽ cần make mediaframeworktest rồi sử dụng adb để cài đặt tệp .apk thu được. Dưới đây là các lệnh mẫu.

Đường dẫn bắt đầu cho các kiểm thử khung nội dung đa phương tiện liên quan đến Máy ảnh là: platform/frameworks/base

Tìm mã nguồn cho các bài kiểm thử tại đây: frameworks/base/media/tests/MediaFrameworkTest

Cách thiết lập các bài kiểm thử này:

make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk

Trong đó, biến name đại diện cho thư mục chứa sản phẩm của nhà cung cấp.

Tìm tất cả các chương trình 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 nội dung nghe nhìn

Cách xem tất cả các bài kiểm thử có sẵn:

adb shell pm list instrumentation

Thao tác này sẽ trả về 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:(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ử (MediaFrameworkTestRunner).

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 giá trị được 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. Hãy đả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 trình chạy kiểm thử.

Để chạy một lớp kiểm thử, hãy truyền đối số của lớp -e, như sau:

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 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ài đặt nội dung nghe nhìn

Dưới đây là ví dụ về lần chạy kiểm thử chức năng. Thử nghiệm này sẽ xác minh chức năng cơ bản của nhiều tổ hợp chế độ cài đặt máy ảnh. (ví dụ: Flash, phơi sáng, WB, cảnh, kích thước hình ảnh và geoTag)

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

Dưới đâ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ẽ 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

Quy trình kiểm thử bộ nhớ xem trước này sẽ mở và phát hành bản xem trước của máy ảnh 200 lần. Trong mỗi 20 lần lặp, bản tổng quan nhanh của ps mediaserver sẽ được ghi lại và so sánh mức sử dụng bộ nhớ sau 200 lần lặp. Quá trình kiểm thử sẽ không thành công nếu mức chênh lệch lớn hơn 150kM.

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 về đầu ra 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ử tình trạng áp lực của nội dung nghe nhìn

Kiểm thử này nhằm nhấn mạnh khả năng chụp ảnh và quay video của máy ảnh.

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 bài kiểm thử đều phải đạt.

Kiểm thử TestingCam theo cách thủ công

Bạn nên chạy ứng dụng TestingCam theo cách thủ công với các bước kiểm tra sau đây. Nguồn của TestingCam tại đây: pdk/apps/TestingCamera/

Tiêu điểm vô cực với tính năng nghiêng máy ảnh

Khởi động TestingCam, bật chế độ xem trước và đảm bảo chế độ tự động lấy nét được đặt thành vô cực. Sử dụng nút Chụp ảnh để chụp các đối tượng ở xa (cách xa ít nhất 10m) với máy ảnh hướng theo chiều ngang, hướng lên trên (gần như theo chiều dọc) và hướng xuống dưới (gần như theo chiều dọc); ví dụ về ảnh chụp hướng lên trên có thể là lá/cành cây cao từ bên dưới và ví dụ về ảnh chụp hướng xuống dưới 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 để một máy ảnh có bộ truyền động VCM vượt qua bài kiểm thử này, máy ảnh đó sẽ cần một 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 máy ảnh. Bạn cũng cần hiệu chuẩn 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ử TestingCam2 theo cách thủ công

Bạn nên 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 đây. Nguồn cho TestingCam2 tại đây: pdk/apps/TestingCamera2/

Quay ảnh JPEG

Khởi động TestingCam2 rồi nhấn 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, bao gồm cả việc có cùng hướng.