AP Config 好像是存成檔案,不是用 sql 存的。
WifiService 啟動的時候,在 生成函數 WifiService( ) 最後就有:
//Initiate a read of Wifi Ap configuration
Message.obtain(mWifiHandler, MESSAGE_READ_WIFI_AP_CONFIG).sendToTarget();
對應的 MESSAGE_READ_WIFI_AP_CONFIG 的 handler 是:
private class WifiHandler extends Handler {
...
...
case MESSAGE_READ_WIFI_AP_CONFIG:
readWifiApConfigBlocked();
break;
readWifiApConfigBlocked( ) 是:
DataInputStream in = null;
try {
WifiConfiguration config = new WifiConfiguration();
in = new DataInputStream(new BufferedInputStream(new FileInputStream(
WIFIAP_CONFIG_FILE)));
int version = in.readInt();
if (version != 1) {
Slog.e(TAG, "Bad version on hotspot configuration file, set defaults");
setDefaultWifiApConfiguration();
return;
}
config.SSID = in.readUTF();
int authType = in.readInt();
config.allowedKeyManagement.set(authType);
if (authType != KeyMgmt.NONE) {
config.preSharedKey = in.readUTF();
}
synchronized (mWifiApConfigLock) {
mWifiApConfig = config;
}
} catch (IOException ignore) {
setDefaultWifiApConfiguration();
} finally {
其中的 WIFI_AP_CONFIG_FILE 是在:
private static final String WIFIAP_CONFIG_FILE = Environment.getDataDirectory() +
"/misc/wifi/softap.conf";
這個 file 要在 WifiService 只少啟動一次後,才會產生。
系統的其他 component 要得到 wifi ap configuration 要靠 WifiConfiguration 這個 class。
然後是用 Parcel (Android 的 serialize) 作傳送。
所以讀入 config 後,還要修改 WifiConfiguration Parcel 的內容,把 Channel Number 加進去。
沒有留言:
張貼留言