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ị hỗ trợ khám phá và kết nối trực tiếp với nhau bằng giao thức Wi-Fi Direct mà không cần quyề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 Direct của Liên minh Wi-Fi (WFA) cho phép chia sẻ dữ liệu công suất cao giữa các thiết bị đáng tin cậy và ứng dụng nằm 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ị phải triển khai giao diện Nhà cung cấp Wi-Fi và giao diện HAL Suppli CHO.

Trên Android 13, giao diện Supplipli 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, giao diện HAL của Suppli CHO và Nhà cung cấp được xác định bằng HIDL.

Bạn cần có các nền tảng Wi-Fi HAL sau đây để sử 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ả khung và hỗ trợ HAL/phần mềm cơ sở:

  • Khung:
    • Mã AOSP (Dự án nguồn mở Android)
    • Bật Wi-Fi Direct: Yêu cầu cờ tính năng
  • Hỗ trợ HAL cho Wi-Fi Direct (P2P) (ngụ ý rằ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ị 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 để đưa tính năng hỗ trợ 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.

Sắp xếp ngẫu nhiên MAC

Android yêu cầu địa chỉ thiết bịđịa chỉ giao diện Wi-Fi Direct phải được chọn ngẫu nhiên. Các địa chỉ này phải khác với địa chỉ MAC thực sự 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 chọn 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 chọn ngẫu nhiên mỗi khi thiết lập kết nối.

Việc sắp xếp ngẫu nhiên Wi-Fi Direct MAC được triển khai trong "wpa_supplicher" và được kiểm soát bằng 2 cấu hình là p2p_device_random_mac_addrp2p_interface_random_mac_addr.

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

  • Triển khai Wi-Fi Suppli CHO ISupplicantP2pIface::setMacRandomization API. Tuỳ thuộc vào giao diện được triển khai, các bước này có thể là:
    • 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 tập hợp các bài kiểm thử đơn vị, quy trình kiểm tra Bộ kiểm tra tính tương thích (CTS) và quy trình kiểm thử CTS Verifier để xác thực tính năng Wi-Fi Direct. Bạn cũng có thể kiểm tra Wi-Fi Direct bằng Bộ thử nghiệm nhà cung cấp (VTS).

Kiểm thử đơn vị

Xác minh gói Wi-Fi Direct bằng các quy trình kiểm tra sau đây.

Kiểm thử dịch vụ:

atest com.android.server.wifi.p2p

Thử nghiệm dành cho người quản lý:

atest android.net.wifi.p2p

Các bài kiểm tra Bộ kiểm tra tính tương thích (CTS)

Sử dụng thử nghiệm CTS để xác thực tính năng Wi-Fi Direct. CTS sẽ phát hiện thời điểm tính năng này được bật và tự động đưa vào các bài kiểm thử liên quan.

Để kích hoạt thử nghiệm CTS, hãy chạy:

% atest android.net.wifi.p2p.cts

Thử nghiệm Trình xác minh CTS

Các bài kiểm thử Trình xác minh CTS sẽ xác thực hành vi Wi-Fi Direct thông qua hai thiết bị: một thiết bị thử nghiệm và một thiết bị tốt đẹp. Để chạy kiểm thử, hãy mở Trình xác minh CTS và chuyển đến mục có tiêu đề Kiểm thử Wi-Fi Direct.