Nhận biết Wi-Fi

Tính năng Wi-Fi Aware được bổ sung trong 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 trong Android 9) trực tiếp với nhau bằ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ố Wi-Fi Aware của Wi-Fi Alliance (WFA) (phiên bản 2.0, 3.0, 3.1 và 4.0), cho phép dễ dàng chia sẻ dữ liệu thông lượng cao giữa các thiết bị và ứng dụng đáng tin cậy ngoà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 để sử dụng tính năng Nhận biết Wi-Fi. Tùy thuộc vào giao diện nào được triển khai, đây là:

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

Bạn có thể tham khảo Wi-Fi HAL cũ để xem nó 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 .

Thực hiện

Các nhà sản xuất thiết bị cần cung cấp cả hỗ trợ framework và HAL/firmware:

  • Khung:
    • Mã AOSP
    • Bật nhận thức: Yêu cầu cả cờ tính năng và cờ xây 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, 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:

  • Trong BoardConfig.mk hoặc BoardConfig-common.mk nằm trong device/<oem>/<device> , 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 để bao gồm 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 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 khứ hồi (RTT). Tính năng phụ này của Wi-Fi Aware có điều kiện trên thiết bị hỗ trợ tính năng Wi-Fi RTT, tức là nó yêu cầu thiết bị phải hỗ trợ cả Wi-Fi Aware và Wi-Fi RTT. Để biết thêm chi tiết, hãy xem Wi-Fi RTT .

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

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

ngẫu nhiên MAC

Android yêu cầu địa chỉ MAC của Wi-Fi Aware Discovery (NMI) và giao diện dữ liệu (NDP) phải được chọn 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 là:

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

Tạm dừng và tiếp tục

Trong Android 14 trở lên, Wi-Fi Aware hỗ trợ khả năng cho các ứng dụng đặc quyền tạm dừ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 đó). Việc hỗ trợ khả năng này cho phép 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 dừ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 Nhận biết Wi-Fi khi một ứng dụng đặc quyền tạm dừng phiên khám phá. Khi phiên khám phá ở trạng thái tạm dừ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 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 dừ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 phiên khám phá bị tạm dừng, khung sẽ trả phiên về trạng thái trước đó, bao gồm 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 dừng nhanh hơn việc khởi động Wi-Fi Aware và tạo 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 hỗ trợ HAL và chương trình cơ sở. Để biết chi tiết, hãy xem IWifiNanIface.java .

Các nhà sản xuất thiết bị có thể sử dụng liên lạc ngoài băng tần (ví dụ: BLE) để đồng bộ hóa việc tạm dừng và tiếp tục trên nhiều thiết bị.

Thẩm định

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

Kiểm tra đơn vị

Việc kiểm tra gói Wi-Fi Aware được thực hiện bằng cách sử dụng:

Kiểm tra dịch vụ:

atest com.android.server.wifi.aware

Kiểm tra người quản lý:

atest android.net.wifi.aware

Kiểm tra tích hợp (ACTS)

Bộ kiểm tra acts/sl4a , được mô tả trong tools/test/connectivity/acts_tests/tests/google/wifi/aware/README.md , cung cấp các bài kiểm tra chức năng, hiệu suất và mức độ căng thẳng.

Kiểm tra Bộ kiểm tra khả năng tương thích (CTS)

Sử dụng các bài kiểm tra 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 này được bật và tự động bao gồm các bài kiểm tra liên quan.

Các thử nghiệm CTS có thể được kích hoạt bằng cách sử dụng:

atest SingleDeviceTest

Kiểm tra trình xác minh CTS

Các bài kiểm tra 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 hai thiết bị: một thiết bị thử nghiệm và một thiết bị tốt đã biết . Để chạy thử nghiệm, hãy mở Trình xác minh CTS và điều hướng đến phần có tiêu đề Kiểm tra nhận thức Wi-Fi.