Nhận biết Wi-Fi

Tính năng Wi-Fi Aware được thêm vào Android 8.0 cho phép các thiết bị hỗ trợ khám phá, kết nối và phạm vi (được thêm vào Android 9) với nhau trực tiếp bằng cách sử dụng giao thức Wi-Fi Aware mà không cần truy cập Internet hoặc mạng di động. Tính năng này được xây dựng dựa trên thông số kỹ thuật Wi-Fi Aware (phiên bản 2.0, 3.0, 3.1 và 4.0) của Liên minh Wi-Fi (WFA). Tính năng này cho phép dễ dàng chia sẻ dữ liệu có tốc độ truyền cao giữa các thiết bị và ứng dụng đáng tin cậy mà không cần kết nối 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, đây 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 HAL này có mối tương quan như thế nào với 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:

  • Khung:
    • Mã AOSP (Dự án nguồn mở Android)
    • Bật Aware: Yêu cầu cả cờ tính năng và cờ bản dựng
  • Hỗ trợ HAL Wi-Fi Aware (NAN) (ngụ ý hỗ trợ phần mềm cơ sở)

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

  • Trong BoardConfig.mk hoặc BoardConfig-common.mk nằm trong device/<oem>/<device>, hãy thêm cờ sau:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • Trong device.mk nằm trong device/<oem>/<device>, hãy sửa đổi biến môi trường PRODUCT_COPY_FILES để thêm tính năng hỗ trợ cho tính năng Nhận biết Wi-Fi:

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

Wi-Fi Aware bao gồm cả phạm vi đến các thiết bị ngang hàng bằng giao thức IEEE 802.11mc, còn gọi là Thời gian truyền dữ liệu qua lại (RTT). Tính năng phụ này của Wi-Fi Aware phụ thuộc vào việc thiết bị có hỗ trợ tính năng Wi-Fi RTT hay không, tức là yêu cầu thiết bị hỗ trợ cả Wi-Fi Aware và Wi-Fi RTT. Để biết thêm thông tin chi tiết, hãy xem phần RTT Wi-Fi.

Nếu không, mọi thứ cần thiết cho tính năng này đều có trong AOSP.

Cờ WIFI_HIDL_FEATURE_AWARE sẽ bị bỏ qua nếu bạn chỉ định cờ WIFI_HAL_INTERFACE_COMBINATIONS. Để biết thêm thông tin, hãy xem phần Đồ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 nhận biết (NMI) và giao diện dữ liệu (NDP) phải ngẫu nhiên và không giống với địa chỉ MAC thực của thiết bị. Địa chỉ MAC phải:

  • Được tạo ngẫu nhiên bất cứ khi nào bạn bật hoặc bật lại tính năng Wi-Fi Aware.
  • Khi bật Wi-Fi Aware, địa chỉ MAC phải được tạo ngẫu nhiên theo một khoảng thời gian thông thường do tham số NanConfigRequest.macAddressRandomizationIntervalSec định cấu hình. Theo mặc định, khung này được định cấu hình là 30 phút.

Suspend và resume

Trên Android 14 trở lên, Wi-Fi Aware hỗ trợ tính năng cho phép 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 cả tất cả đường dẫn dữ liệu liên kết với các phiên đó). Việc hỗ trợ tính năng này cho phép các thiết bị tiếp tục các phiên khám phá nhanh hơn và sử dụng ít năng lượng hơn vì các phiên khám phá có thể bị tạm ngưng.

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

Khi một ứng dụng đặc quyền tiếp tục một phiên khám phá bị tạm ngưng, khung này sẽ trả về phiên đó về trạng thái trước đó, bao gồm cả tất cả các phiên NDP được liên kết. Việc tiếp tục phiên khám phá bị tạm ngưng sẽ nhanh hơn việc kích hoạt tính năng 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á, nhà sản xuất thiết bị phải cung cấp tính năng hỗ trợ HAL và 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 giao tiếp ngoài băng tần (ví dụ: BLE) để đồng bộ hoá trạng thái 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ị, bài kiểm thử Bộ kiểm tra tính tương thích (CTS) và bài kiểm thử CTS Verifier để xác thực tính năng Nhận biết Wi-Fi. Bạn cũng có thể kiểm thử Wi-Fi Aware bằng cách sử dụng Bộ kiểm thử nhà cung cấp (VTS).

Kiểm thử đơn vị

Các kiểm thử gói Wi-Fi Aware đượ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 các bài kiểm thử CTS để xác thực tính năng Wi-Fi Aware. CTS phát hiện thời điểm tính năng này được bật và tự động đưa các kiểm thử liên quan vào.

Bạn có thể kích hoạt các kiểm thử CTS bằng:

atest SingleDeviceTest

Kiểm thử bằng CTS Verifier

Các kiểm thử của Trình xác minh CTS xác thực hành vi của tính năng Wi-Fi Aware bằng cách sử dụng hai thiết bị: một thiết bị kiểm thử và một thiết bị đã biết là tốt. Để chạy kiểm thử, hãy mở Trình xác minh CTS và chuyển đến phần có tiêu đề Kiểm thử nhận biết Wi-Fi.