Nhận biết Wi-Fi

Chiến lược phát hành đĩa đơn Nhận biết được Wi-Fi được thêm vào trong Android 8.0 cho phép các thiết bị hỗ trợ khám phá, kết nối, và dải ô (được thêm vào Android 9) trực tiếp với nhau bằng giao thức Nhận biết Wi-Fi mà không cần truy cập Internet hoặc mạng di động. Chiến dịch này được xây dựng dựa trên Liên minh Wi-Fi (WFA) Thông số kỹ thuật của tính năng Nhận biết Wi-Fi (phiên bản 2.0, 3.0, 3.1 và 4.0), cho phép chia sẻ dễ dàng dữ liệu thông lượng cao trong số các thiết bị đáng tin cậy và ứng dụng không thuộc mạng.

Ví dụ và nguồn

Để sử dụng tính năng này, nhà sản xuất thiết bị nên triển khai HAL của nhà cung cấp Wi-Fi. Trong Android 14 trở lên, giao diện HAL của nhà cung cấp được xác định bằng AIDL. Đối với Android 13 trở xuống: giao diện HAL của nhà cung cấp được xác định bằng HIDL.

Làm theo giao diện Wi-Fi để triển khai tính năng Nhận biết Wi-Fi. Tuỳ thuộc vào giao diện được triển khai, có thể là:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 trở lên

Bạn có thể tham khảo HAL Wi-Fi cũ để xem mối tương quan giữa Giao diện AIDL và HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.

Triển khai

Nhà sản xuất thiết bị cần cung cấp cả khung và hỗ trợ HAL/phần mềm cơ sở:

  • Khung:
    • Mã AOSP (Dự án nguồn mở Android)
    • Bật tính năng Nhận biết: Yêu cầu cả cờ tính năng và cờ bản dựng
  • Hỗ trợ lớp trừu tượng phần cứng (HAL) cho tính năng Nhận biết Wi-Fi (NAN) (ngụ ý là hỗ trợ chương trình cơ sở)

Để triển khai tính năng này, các nhà sản xuất thiết bị triển khai giao diện Wi-Fi và bật hai cờ tính năng:

  • BoardConfig.mk hoặc BoardConfig-common.mk tại device/<oem>/<device>, hãy thêm cờ sau:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • Trong device.mk nằm ở device/<oem>/<device>, hãy sửa đổi Biến môi trường PRODUCT_COPY_FILES để bao gồm tính năng hỗ trợ Wi-Fi Tính năng nâng cao:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

Nhận biết Wi-Fi bao gồm khả năng kết nối với nhiều thiết bị ngang hàng sử dụng giao thức IEEE 802.11mc, còn được gọi là Thời gian trọn vòng (RTT). Tính năng phụ này của tính năng Nhận biết Wi-Fi là có điều kiện đối với thiết bị hỗ trợ tính năng RTT qua Wi-Fi, tức là thiết bị này sẽ yêu cầu thiết bị để hỗ trợ cả tính năng Nhận biết Wi-Fi và Tin nhắn theo thời gian thực (RTT) của Wi-Fi. Để biết thêm thông tin, hãy xem Tin nhắn theo thời gian thực (RTT) của Wi-Fi.

Nếu không, mọi thứ cần thiết cho tính năng này sẽ được đưa vào AOSP.

Cờ WIFI_HIDL_FEATURE_AWARE bị bỏ qua nếu WIFI_HAL_INTERFACE_COMBINATIONS cờ đã được chỉ định. Để biết thêm thông tin, hãy xem Tính năng đồng thời nhiều giao diện Wi-Fi.

Sắp xếp ngẫu nhiên MAC

Android yêu cầu địa chỉ MAC của tính năng khám phá Wi-Fi (NMI) và dữ liệu giao diện (NDP) được sắp xếp ngẫu nhiên và không giống với địa chỉ MAC thực sự của thiết bị. Địa chỉ MAC phải:

  • Sắp xếp ngẫu nhiên bất cứ khi nào tính năng Nhận biết Wi-Fi được bật hoặc bật lại.
  • Khi tính năng Nhận biết Wi-Fi được bật, địa chỉ MAC phải được chọn ngẫu nhiên được định cấu hình bởi Tham số NanConfigRequest.macAddressRandomizationIntervalSec. Chiến dịch này được khung định cấu hình theo mặc định là 30 phút.

Suspend và resume

Trên Android 14 trở lên, tính năng Nhận biết Wi-Fi hỗ trợ khả năng các ứng dụng đặc quyền tạm ngưng và tiếp tục các phiên khám phá đang hoạt động (bao gồm tất cả đường dẫn dữ liệu được liên kết với các phiên đó). Ủng hộ nội dung này cho phép thiết bị tiếp tục phiên khám phá nhanh hơn và sử dụng ít năng lượng hơn vì phiên khám phá có thể bị tạm ngưng.

Nếu thiết bị hỗ trợ khả năng tạm ngưng và tiếp tục này, chương trình cơ sở sẽ tạm ngưng phiên Nhận biết Wi-Fi khi một ứng dụng có đặc quyền tạm ngưng phiên khám phá. Khi phiên khám phá ở trạng thái tạm ngưng, thiết bị sẽ không truyền dữ liệu hoặc nhận bất kỳ khung hình nào cho phiên đó, bao gồm mọi NDP đang hoạt động trong phiên đó phiên hoạt động. Nếu tất cả các phiên khám phá đều bị tạm ngưng, thiết bị sẽ không truyền dữ liệu hoặc nhận bất kỳ khung Wi-Fi Aware nào.

Khi một ứng dụng có đặc quyền tiếp tục phiên khám phá bị tạm ngưng, khung này trả về phiên hoạt động về trạng thái trước đó, bao gồm tất cả NDP được liên kết phiên hoạt động. Việc tiếp tục phiên khám phá bị tạm ngưng sẽ nhanh hơn việc hiển thị Nhận biết Wi-Fi và tạo phiên khám phá mới.

Để hỗ trợ khả năng tạm ngưng và tiếp tục các phiên khám phá, hãy thiết bị nhà sản xuất phải cung cấp lớp HAL (Lớp trừu tượng phần cứng) và hỗ trợ chương trình cơ sở. Để biết thông tin chi tiết, hãy xem IWifiNanIface.java.

Nhà sản xuất thiết bị có thể sử dụng phương thức giao tiếp ngoài băng tần (ví dụ: BLE) để đồng bộ hoá việc tạm ngưng và tiếp tục trên nhiều thiết bị.

Xác nhận kết quả

Android cung cấp một tập hợp các bài kiểm thử đơn vị, các kiểm tra Bộ kiểm tra tính tương thích (CTS) và Kiểm tra Trình xác minh CTS để xác thực Wi-Fi Tính năng nâng cao. Bạn cũng có thể kiểm tra tính năng Nhận biết Wi-Fi bằng Bộ thử nghiệm dành cho nhà cung cấp (VTS).

Kiểm thử đơn vị

Các hoạt động kiểm tra gói Nhận biết Wi-Fi được thực thi bằng:

Kiểm thử dịch vụ:

atest com.android.server.wifi.aware

Thử nghiệm dành cho người quản lý:

atest android.net.wifi.aware

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

Sử dụng thử nghiệm CTS để xác thực tính năng Nhận biết Wi-Fi. CTS phát hiện khi tính năng được bật và tự động bao gồm các thử nghiệm liên quan.

Bạn có thể kích hoạt chương trình kiểm thử CTS bằng cách sử dụng:

atest SingleDeviceTest

Thử nghiệm Trình xác minh CTS

Các thử nghiệm Trình xác minh CTS xác thực hành vi Nhận biết Wi-Fi bằng hai thiết bị: thử nghiệm và một thiết bị phổ biến. Để chạy thử nghiệm, hãy mở Trình xác minh CTS và hãy chuyển đến phần có tiêu đề Kiểm tra nhận biết Wi-Fi.