Wi-Fi Direct 機能は Wi-Fi P2P とも呼ばれます。サポートしているデバイスは、インターネットやモバイル ネットワークにアクセスしなくても、Wi-Fi Direct プロトコルを使用してデバイス同士を直接検出し、接続することが可能です。この機能は Wi-Fi Alliance(WFA)の Wi-Fi Direct 仕様を基盤とし、ネットワークに接続していなくても、信頼できるデバイスやアプリ同士で高スループットのデータの共有ができるようになります。
例とソース
この機能を使用するには、Wi-Fi ベンダーとサプリカントの HAL インターフェースがデバイス メーカーによって実装されている必要があります。
Android 13 では、サプリカントのインターフェースは AIDL を HAL の定義に使用します。Android 14 以降では、ベンダーの HAL インターフェースは AIDL を使用します。Android 12 以前では、サプリカントとベンダーの HAL インターフェースは HIDL を使用して定義されています。
Wi-Fi Direct 機能を使用するには、次の Wi-Fi HAL サーフェスが必要です。
hardware/interfaces/wifi/aidl
、またはhardware/interfaces/wifi/1.3
以降hardware/interfaces/wifi/supplicant/aidl
、またはhardware/interfaces/wifi/supplicant/1.2
以降
実装
デバイス メーカーは、フレームワークと HAL / ファームウェアの両方のサポートを提供する必要があります。
- フレームワーク:
- AOSP コード
- Wi-Fi Direct を有効にする: 機能フラグが必要です
- Wi-Fi Direct(P2P)HAL のサポート(ファームウェアのサポート)
この機能を実装するには、デバイス メーカーが Wi-Fi HIDL または AIDL インターフェースを実装し、Wi-Fi Direct の機能フラグを有効にする必要があります。device/<oem>/<device>
内の device.mk
で、PRODUCT_COPY_FILES
環境変数を変更して 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
```
Wi-Fi Direct をサポートするためのその他の要件は、すべて AOSP に含まれています。
MAC アドレスのランダム化
Android では、Wi-Fi Direct のデバイス アドレスとインターフェース アドレスをランダムに指定する必要があります。各アドレスは、デバイスの実際の MAC アドレスとは異なるものにする必要があり、かつ、以下の要件を満たす必要があります。
- Wi-Fi Direct のデバイス アドレスは、永続的なグループが保存されていない場合は、インターフェースの作成時にランダム化する必要があります。それ以外の場合は、最後に生成された MAC アドレスをそのまま使用する必要があります。
- Wi-Fi Direct のインターフェース アドレスはグループ アドレスとも呼ばれ、接続が確立されるたびにランダムに設定される必要があります。
Wi-Fi Direct MAC のランダム化は「wpa_supplicant」内の実装であり、p2p_device_random_mac_addr
と p2p_interface_random_mac_addr
の 2 つの構成によって制御されます。
この機能を有効にするには、デバイス メーカーは以下を行う必要があります。
- Wi-Fi Supplicant
ISupplicantP2pIface::setMacRandomization
API を実装する。実装されたインターフェースに応じて、以下のようになります。hardware/interface/wifi/supplicant/1.2
(HIDL の場合)hardware/interface/wifi/supplicant/aidl
(AIDL の場合)
- デバイスのカスタム オーバーレイ内で、
config_wifi_p2p_mac_randomization_supported
を「true」に設定する。
検証
Wi-Fi Direct 機能は、Android に用意されている一連の単体テスト、統合テスト(Android 接続テストスイート、ACTS)、互換性テストスイート(CTS)を使用したテスト、CTS 検証ツールを使用したテストによって検証できます。Wi-Fi Direct は、ベンダー テストスイート(VTS)を使用してテストすることもできます。
単体テスト
次のテストを使用して、Wi-Fi Direct パッケージを検証します。
サービステスト:
atest com.android.server.wifi.p2p
マネージャー テスト:
atest android.net.wifi.p2p
統合テスト(ACTS)
tools/test/connectivity/acts_tests/tests/google/wifi/p2p
にある ACTS Wi-Fi Direct テストスイートは、Wi-Fi Direct の機能テストを実装します。
互換性テストスイート(CTS)によるテスト
CTS テストを使用して、Wi-Fi Direct 機能を検証します。CTS は機能が有効になったことを検出し、関連するテストを自動的に含めます。
CTS テストをトリガーするには、次のコマンドを実行します。
% atest android.net.wifi.p2p.cts
CTS 検証ツールによるテスト
CTS 検証ツールによるテストでは、テスト対象のデバイスと正常な動作を確認済みのデバイスの 2 つのデバイスを使用して、Wi-Fi Direct の動作を検証します。テストを実行するには、CTS 検証ツールを開いて、[Wi-Fi Direct Tests] に移動します。