Android には、各種の Wi-Fi プロトコルや Wi-Fi モードのサポートなどを含む、次のようなデフォルトの Android フレームワークが実装されています。
- Wi-Fi インフラストラクチャ(STA)
- テザリング モードまたはローカル専用モードの Wi-Fi アクセス ポイント(Soft AP)
- Wi-Fi Direct(P2P)
- Wi-Fi Aware(NAN)
- Wi-Fi RTT(IEEE 802.11mc FTM)
Wi-Fi サービスを使用するアプリは、Binder を介してさまざまな Wi-Fi サービスと直接通信します。Wi-Fi サービスはシステム サービスで実行され、提供される HIDL と AIDL インターフェースを介して HAL と通信します。次の図は、Android Wi-Fi スタックの一般的な構造を示しています。
図 1:Android の Wi-Fi アーキテクチャ
アプリケーション フレームワーク
アプリケーション フレームワーク レベルには、さまざまな android.net.wifi API を使用して、Wi-Fi フレームワークおよびハードウェアとの通信を行うアプリコードがあります。内部では、このコードが Binder IPC メカニズムを介して Wi-Fi プロセスを呼び出します。
Wi-Fi サービス
Wi-Fi サービスはシステム サービスで実行され、packages/modules/Wifi/service/
で確認できます。Wi-Fi サービスは、AIDL を介して Wi-Fi HAL と通信します。
次のようなさまざまな Wi-Fi サービスがあります。
- Wi-Fi サービス: Wi-Fi インフラストラクチャ モード(STA および AP)を制御する主要なメカニズムです。
- Wi-Fi P2P サービス: Wi-Fi Direct モードを管理します。
- Wi-Fi Aware サービス: Wi-Fi Aware モードを管理します。
- Wi-Fi RTT サービス: IEEE 802.11mc FTM の機能を管理します。
Wi-Fi フレームワークには、スタンドアロンのプロセスも含まれており、wificond は、system/connectivity/wificond
で確認できます。wificond プロセスは、標準の nl80211
コマンドを介して Wi-Fi ドライバと通信します。
Wi-Fi HAL
Wi-Fi フレームワークには、Vendor HAL、Supplicant HAL、Hostapd HAL の 3 つのそれぞれの HIDL パッケージに代表される 3 つの Wi-Fi HAL サーフェスがあります。
さまざまな HAL の実装について詳しくは、Wi-Fi HAL をご覧ください。