Wi-Fi Aware

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 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 để sử dụng 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 cách HAL này tương quan 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/firmware:

  • Khung:
    • Mã AOSP
    • 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ợ chương trình cơ sở)

Để triển khai tính năng này, nhà sản xuất thiết bị sẽ triển khai giao diện Wi-Fi và bật hai 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 để hỗ trợ tính năng Wi-Fi Aware:

    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ả tính năng đo khoảng cách đế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 phát hiện Wi-Fi Aware (NMI) và giao diện dữ liệu (NDP) phải được tạo 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 tính năng 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, 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 một phiên khám phá bị tạm ngưng sẽ nhanh hơn so với việc hiển thị Wi-Fi Aware và tạo một 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 bộ kiểm thử đơn vị, kiểm thử Bộ kiểm thử tính tương thích (CTS) và kiểm thử Trình xác minh CTS để xác thực tính năng Wi-Fi Aware. 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

Kiểm thử trình quản lý:

atest android.net.wifi.aware

Các bài kiểm thử trong 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 bật tính năng này 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ử Trình xác minh CTS

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 các bài kiểm thử, hãy mở CTS Verifier rồi chuyển đến phần có tiêu đề Wi-Fi Aware Tests (Kiểm thử Wi-Fi Aware).