Android 8.0 で追加された Wi-Fi Aware 機能により、対応デバイスは Wi-Fi Aware プロトコルを使用して、インターネットまたはモバイル ネットワークにアクセスすることなく、直接的に相互の検出、接続、距離測定(Android 9 で追加)を行えます。Wi-Fi Alliance(WFA)の Wi-Fi Aware 仕様(バージョン 2.0、3.0、3.1)を基盤とするこの機能を使用すると、この機能を使用しなければネットワークに接続されない信頼できるデバイスとアプリの間で、高スループットのデータを簡単に共有できます。
例とソース
この機能を使用するには、Android オープンソース プロジェクト(AOSP)で提供される Wi-Fi Hardware Interface Design Language(HIDL)をデバイス メーカーが実装する必要があります。HIDL は、インターフェースとパッケージに収集されるデータの種類とメソッド呼び出しを指定して実装を合理化するために使用されていた、以前のハードウェア抽象化レイヤ(HAL)構造に代わるものです。
Wi-Fi HIDL に従って Wi-Fi Aware 機能を使用してください(hardware/interfaces/wifi/1.2 以降)。Wi-Fi Aware の HAL サーフェスは非常に大規模で、hardware/interfaces/wifi/1.2/README-NAN.md ファイルにはフレームワークで現在使用されているサブセットが記述されています。
以前の Wi-Fi HAL を参照して、新しい HIDL インターフェースとの相関関係を確認できます(hardware/libhardware_legacy/+/master/include/hardware_legacy/wifi_nan.h)。
実装
デバイス メーカーは、フレームワークと HAL / ファームウェアの両方のサポートを提供する必要があります。
- フレームワーク:
- AOSP コード
- Aware の有効化: 機能フラグと HIDL ビルドフラグの両方が必要です
- Wi-Fi Aware(NAN)HAL のサポート(つまりファームウェアのサポート)
この機能を実装するには、デバイス メーカーで Wi-Fi HIDL を実装し、次の 2 つの機能フラグを有効にします。
device/<oem>/<device>
にあるBoardConfig.mk
またはBoardConfig-common.mk
で、次のフラグを追加します。WIFI_HIDL_FEATURE_AWARE := true
device/<oem>/<device>
にあるdevice.mk
で、PRODUCT_COPY_FILES
環境変数を変更して 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 には、IEEE 802.11mc プロトコルを使用したピアデバイスとの距離測定が含まれます。これはラウンドトリップ時間(RTT)とも呼ばれます。この Wi-Fi Aware のサブ機能は、デバイスが Wi-Fi RTT 機能をサポートしていることが条件になっています。つまり、デバイスは Wi-Fi Aware と Wi-Fi RTT の両方に対応している必要があります。詳しくは、Wi-Fi RTT をご覧ください。
それ以外にこの機能に必要なものはすべて AOSP に含まれています。
WIFI_HAL_INTERFACE_COMBINATIONS
フラグが指定されている場合、WIFI_HIDL_FEATURE_AWARE
フラグは無視されます。詳しくは、Wi-Fi マルチインターフェースの同時実行をご覧ください。
MAC アドレスのランダム化
Android では、Wi-Fi Aware 検出(NMI)とデータ インターフェース(NDP)の MAC アドレスをランダム化して、デバイスの実際の MAC アドレスと同一にならないようにする必要があります。MAC アドレスに関する注意事項は次のとおりです。
- MAC アドレスは、Wi-Fi Aware が有効化または再有効化されるたびにランダム化する必要があります。
Wi-Fi Aware が有効になっている場合、
NanConfigRequest.macAddressRandomizationIntervalSec
HIDL パラメータで設定された一定の間隔で MAC アドレスをランダム化する必要があります。これはフレームワークによってデフォルトで 30 分に設定されます。
検証
Android には、Wi-Fi Aware 機能を検証するために、一連の単体テスト、統合テスト(ACTS)、互換性テストスイート(CTS)テスト、CTS 検証ツールによるテストが用意されています。ベンダー テストスイート(VTS)を使用して Wi-Fi Aware をテストすることもできます。
単体テスト
Wi-Fi Aware パッケージのテストは以下を使用して行います。
サービステスト:
atest com.android.server.wifi.aware
マネージャー テスト:
atest android.net.wifi.aware
統合テスト(ACTS)
tools/test/connectivity/acts_tests/tests/google/wifi/aware/README.md
に記載されている acts/sl4a
テストスイートには、機能テスト、パフォーマンス テスト、ストレステストが含まれます。
互換性テストスイート(CTS)によるテスト
CTS テストを使用して Wi-Fi Aware 機能を検証します。CTS は機能が有効になったことを検出し、関連するテストを自動的に含めます。
CTS テストは次の方法でトリガーできます。
atest SingleDeviceTest
CTS 検証ツールによるテスト
CTS 検証ツールによるテストでは、テストデバイスと動作確認済みのデバイスの 2 台を使用して Wi-Fi Aware の動作を検証します。テストを実行するには、CTS 検証ツールを開いて [Wi-Fi Aware Tests] に移動します。