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ả thử nghiệm hiện có để đánh giá máy ảnh Android tầng trừu tượng phần cứng (HAL). Thiết bị này dành cho thiết bị gốc nhà sản xuất (OEM) và ứng dụng nhà cung cấp bộ xử lý (AP) để họ có thể đảm bảo triển khai máy ảnh đúng cách HAL (Lớp trừu tượng phần cứng) với số lượng sai sót tối thiểu. Mặc dù đây là sự bổ sung tự nguyện vào Android Bộ kiểm tra tính tương thích (CTS), công cụ này giúp tăng đáng kể phạm vi kiểm tra máy ảnh và chắc chắn sẽ xác định 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 họ đã tích hợp Android đúng cách phần cứng máy ảnh giao diện tầng trừu tượng (HAL) 3. 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 đủ theo với giao diện HAL (Lớp trừu tượng phần cứng) cho máy ảnh của Android. Điều này sẽ cho phép thiết bị hỗ trợ đúng cách cho Gói android.hardware.camera2 dựa trên các ứng dụng máy ảnh.

Thông số kỹ thuật HAL3 cho máy ảnh

Thông số kỹ thuật HAL3 cho máy ảnh Android là nguồn thông tin đáng tin cậy thông tin về những thiết bị phải đáp ứng yêu cầu; trang này cung cấp bản tóm tắt về tất cả các thử nghiệm có thể dùng làm danh sách kiểm tra. Trình triển khai lớp trừu tượng phần cứng (HAL) cho máy ảnh (ví dụ: AP nhà cung cấp) phải lần lượt hướng dẫn từng bước thông số kỹ thuật HAL3 cho Máy ảnh và đảm bảo thiết bị của họ sẽ tuân thủ quy tắc đó.

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

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

Dưới đây là các loại kiểm thử chính hiện có đối với máy ảnh Android mới nhất cùng với tham chiếu đến các hướng dẫn có 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 dưới đây. Các kiểm thử này được trình bày theo thứ tự thời gian mà OEM dự kiến sẽ thực thi chúng.

Ví dụ: nếu một thiết bị 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 bài kiểm tra Bộ kiểm tra tính tương thích (CTS) tiếp theo. Và nếu thiết bị không vượt qua được CTS, rất ít khi sử dụng Bộ kiểm tra hình ảnh (ITS). Bạn nên xử lý các lỗi trong mỗi loại kiểm thử trước khi chuyển sang nhóm kiểm thử.

Các thử nghiệm Bộ thử nghiệm 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 trên Cấp giao diện HIDL. Để biết thêm thông tin về cách sử dụng VTS, hãy xem Bộ thử nghiệm dành cho nhà cung cấp.

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

Các bài kiểm tra của Bộ kiểm tra tính tương thích với máy ảnh (CTS) dành cho máy ảnh sẽ tập trung vào từng thiết bị khả năng tương thích. Để 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 bài kiểm thử CTS của máy ảnh là: platform/cts.

Khi chạy CTS của 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ị vào khi chạy CTS hoặc bài kiểm tra sẽ tự động bị lỗi. Một số ví dụ về máy quay gắn ngoài bao gồm: Webcam Logitech HD Pro C920Microsoft LifeCam HD-3000.

Xem CTS giới thiệu và các trang con của tài liệu này để xem hướng dẫn chung về cách chạy CTS.

Bài kiểm tra CTS (Bộ kiểm tra tính tương thích) cho API android.hardware.Camera

Xem các bài kiểm tra 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

Bài kiểm tra CTS (Bộ kiểm tra tính tương thích) cho API android.hardware.camera2

Xem các bài kiểm tra máy ảnh này trong cts/tests/tests/:

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

Kiểm tra máy ảnh Trình xác minh CTS

Tìm các bài kiểm tra 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 bài kiểm tra của Bộ kiểm tra hình ảnh từ 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 các tập lệnh Python trên máy trạm có Thiết bị Android kết nối qua USB.

Các bài kiểm tra và cơ sở hạ tầng ITS cho camera được đặt trong Thư mục cts/apps/CameraITS. Mỗi lượt 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 kiểm thử, hãy xem ITS cho máy ảnh.

Để biết nội dung mô tả về cảnh và thử nghiệm, vui lòng xem nội dung Kiểm tra ITS cho máy ảnh.

Các bài kiểm thử ITS đạt hoặc không đạt. Tất cả kiểm thử bắt buộc trong mỗi thư mục cảnh đều phải vượt qua. Các chương trình kiểm thử không bắt buộc có thể không thành công và vẫn được tính là đạt yêu cầu CtsVerifier.

ITS kiểm thử các tình huống kiểm thử không được kiểm thử trong CTS và là một quy tắc quan trọng thành phần của kế hoạch thử nghiệm HAL 3.2.

Kiểm thử Media Framework

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. Năn nỉ lưu ý rằng các bài kiểm thử này yêu cầu phải cài đặt mediaframeworktest.apk trên Android thiết bị. Bạn sẽ cần make mediaframeworktest rồi sử dụng adb để cài đặt tệp .apk thu được. Các lệnh mẫu được bao gồm bên dưới.

Đường dẫn bắt đầu cho các bài kiểm thử khung nội dung đa phương tiện liên quan đến Camera 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 chương trình 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ả chương trình kiểm thử trong thư mục sau hoặ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 đa phương tiện

Cách xem tất cả chương trình kiểm thử hiện có:

adb shell pm list instrumentation

Thao tác này sẽ mang lại kết quả tương tự như:

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ư nên:

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 ý, mặc dù đường dẫn lớp là gói Java + tên lớp, nhưng phương thức Gói đo lường không nhất thiết giống với gói Java. Nhãn hiệu Đảm bảo bạn sẽ sử dụng gói AndroidManifest.xml khi liên kết thành phần này 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ố -e class , như nên:

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 duy nhất 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) thành 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 xác minh mã cơ bản chức năng của nhiều tổ hợp chế độ cài đặt camera. (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

Thử nghiệm tích hợp nội dung nghe nhìn

Dưới đây là ví dụ về lần chạy kiểm thử tích hợp, trong trường hợp này 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

Thử nghiệm bộ nhớ xem trước này sẽ mở và phát hành bản xem trước của máy ảnh cho 200 lần. Trong mỗi 20 lần lặp lại, ảnh chụp nhanh của ps mediaserver 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. Thử nghiệm 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 kết quả chi tiết hơn 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, thì 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

Thử nghiệm này nhằm nhấn mạnh quá trình 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 bài kiểm thử đều thành công.

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. Đây là nguồn cho TestingCam: 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 đã đặt chế độ tự động lấy nét thành vô tận. Sử dụng nút Chụp ảnh, chụp ảnh đối tượng ở xa (cách ít nhất 10m) với camera hướng theo chiều ngang, hướng lên (gần thẳng đứng) và hướng xuống (gần với chiều dọc); ví dụ về cảnh quay hướng lên có thể là những cành cây/lá cao từ bên dưới và ví dụ về cảnh quay xuống có thể là đường phố nhìn từ nóc toà nhà tòa nhà. Trong mọi trường hợp, chủ thể ở xa phải sắc nét và rõ nét. Lưu và xem ảnh chụp ở 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.

Lưu ý rằng để camera có bộ truyền động VCM vượt qua được bài kiểm tra này, nó sẽ yêu cầu hoặc là hệ thống điều khiển lấy nét tự động theo vòng khép kín hoặc sẽ cần kiểu SW dựa trên việc sử dụng dữ liệu gia tốc kế để xác định hướng của máy ảnh. Bạn cũng cần được hiệu chỉnh vị trí vô cực của ống kính tại nhà máy một cách đáng tin cậ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ới các bước kiểm tra sau đây thực hiện. Đây là nguồn của TestingCam2: pdk/apps/TestingCamera2/

Chụp ảnh JPEG

Khởi động TestingCam2 và nhấn vào nút JPEG. Hình ảnh xuất hiện ở bên phải hình ảnh kính ngắm sẽ xuất hiện giống với kính ngắm, bao gồm cả việc có cùng hướng.