Wi-Fi Direct

Tính năng Wi-Fi Direct (còn gọi là Wi-Fi P2P) cho phép các thiết bị được hỗ trợ trực tiếp phát hiện và kết nối với nhau bằng giao thức Wi-Fi Direct 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 Wi-Fi Alliance (Liên minh Wi-Fi) (WFA) quy cách Wi-Fi Direct, cho phép 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 cần 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ị phải triển khai giao diện HAL của Nhà cung cấp và Bên yêu cầu Wi-Fi.

Trong Android 13, giao diện Supplicant sử dụng AIDL cho định nghĩa HAL. Trong Android 14 trở lên, giao diện HAL của nhà cung cấp sử dụng AIDL. Trong Android 12 trở xuống, các giao diện Supplicant và Vendor HAL được xác định bằng HIDL.

Bạn phải sử dụng các giao diện HAL Wi-Fi sau đây để dùng tính năng Wi-Fi Direct:

  • hardware/interfaces/wifi/aidl hoặc hardware/interfaces/wifi/1.3 trở lên
  • hardware/interfaces/wifi/supplicant/aidl hoặc hardware/interfaces/wifi/supplicant/1.2 trở lên

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 Wi-Fi Direct: Cần có một cờ tính năng
  • Hỗ trợ HAL Wi-Fi Direct (P2P) (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 HIDL hoặc AIDL và bật cờ tính năng cho Wi-Fi Direct. 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 Direct:

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

Tất cả các yêu cầu khác để hỗ trợ Wi-Fi Direct đều có trong AOSP.

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

Android yêu cầu địa chỉ thiết bị Wi-Fi Directđịa chỉ giao diện được tạo ngẫu nhiên. Địa chỉ này phải khác với địa chỉ MAC thực của thiết bị và phải đáp ứng các yêu cầu sau:

  • Địa chỉ thiết bị Wi-Fi Direct phải được sắp xếp ngẫu nhiên khi tạo giao diện nếu không có nhóm cố định nào được lưu; nếu không, địa chỉ thiết bị phải tiếp tục sử dụng địa chỉ MAC được tạo gần đây nhất.
  • Địa chỉ giao diện Wi-Fi Direct (còn gọi là địa chỉ nhóm) phải được tạo ngẫu nhiên mỗi khi thiết lập kết nối.

Tính năng sắp xếp ngẫu nhiên địa chỉ MAC Wi-Fi Direct được triển khai trong "wpa_supplicant" và được kiểm soát bằng 2 cấu hình, p2p_device_random_mac_addrp2p_interface_random_mac_addr.

Để bật tính năng này, các nhà sản xuất thiết bị phải:

  • Triển khai API ISupplicantP2pIface::setMacRandomization Wi-Fi Supplicant. Tuỳ thuộc vào giao diện được triển khai, điều này nằm trong:
    • hardware/interface/wifi/supplicant/1.2 cho HIDL
    • hardware/interface/wifi/supplicant/aidl cho AIDL
  • Đặt config_wifi_p2p_mac_randomization_supported thành "true" trong lớp phủ tuỳ chỉnh của 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 Direct. Bạn cũng có thể kiểm thử Wi-Fi Direct bằng Vendor Test Suite (VTS).

Kiểm thử đơn vị

Xác minh gói Wi-Fi Direct bằng các kiểm thử sau.

Kiểm thử dịch vụ:

atest com.android.server.wifi.p2p

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

atest android.net.wifi.p2p

Các bài kiểm thử của 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 Direct. 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 quan vào.

Để kích hoạt các bài kiểm thử CTS, hãy chạy:

% atest android.net.wifi.p2p.cts

Các kiểm thử của Trình xác minh CTS

Các kiểm thử CTS Verifier xác thực hành vi của Wi-Fi Direct 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 Direct Tests (Kiểm thử Wi-Fi Direct).