Wi-Fi Aware

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

Ví dụ và nguồn

Để sử dụng tính năng này, các 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 các giao diện AIDL và HIDL: hardware/libhardware_legacy/+/android16-release/include/hardware_legacy/wifi_nan.h.

Triển khai

Nhà sản xuất thiết bị cần cung cấp cả hỗ trợ khung và 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) (nghĩa 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ị 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 để 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 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 được gọi là Thời gian khứ hồ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à thiết bị phải hỗ trợ cả Wi-Fi Aware và Wi-Fi RTT. Để biết thêm thông tin, 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 bài viết Tính năng đồng thời sử dụng nhiều giao diện Wi-Fi.

Tạo địa chỉ MAC ngẫu nhiên

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

  • Được tạo ngẫu nhiên bất cứ khi nào Wi-Fi Aware được bật hoặc bật lại.
  • Khi Wi-Fi Aware được bật, địa chỉ MAC phải được tạo ngẫu nhiên theo một khoảng thời gian đều đặn 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ợ khả 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ả các đường dẫn dữ liệu liên kết với những phiên đó). Việc hỗ trợ khả năng này giúp các thiết bị tiếp tục phiên khám phá nhanh hơn và sử dụng ít điện nă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 dừng và tiếp tục này, thì chương trình cơ sở sẽ tạm dừng phiên Wi-Fi Aware khi một ứng dụng có đặc quyền tạm dừ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 hình nào cho phiên đó, kể cả mọi NDP đang hoạt động trong phiên đó. Nếu tất cả các phiên khám phá đều 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ó đặc quyền tiếp tục một phiên khám phá bị tạm ngưng, khung sẽ trả 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 dừ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 sự hỗ trợ về 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 các phương thức 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ị, các kiểm thử Bộ kiểm tra tính tương thích (CTS) và các kiểm thử CTS Verifier để 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 Bộ kiểm thử của nhà cung cấp (VTS).

Kiểm thử đơn vị

Các kiểm thử gói Nhận biết Wi-Fi được thực thi bằng cách sử dụng:

Kiểm thử dịch vụ:

atest com.android.server.wifi.aware

Kiểm thử người 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 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 được bật và tự động đưa các kiểm thử liên kết vào.

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

atest SingleDeviceTest

Các kiểm thử của 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 Wi-Fi Aware bằng cách sử dụng 2 thiết bị: một thiết bị kiểm thử và một thiết bị đã biết là hoạt động 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 (Các bài kiểm thử Wi-Fi Aware).