WEB开发网
开发学院手机开发Android 开发 Android 移植 wifi 设计原理 阅读

Android 移植 wifi 设计原理

 2010-02-24 05:10:00 来源:WEB开发网   
核心提示:break;WifiMonitor 再调用 WifiStateTracker 的 notifyStateChange,WifiStateTracker 则接着会往自身发送 EVENT_DHCP_START 消息来启动 DHCP 去获取 IP 地址,private void handleConnectedState()

break;

WifiMonitor 再调用 WifiStateTracker 的 notifyStateChange,WifiStateTracker 则接着会往自身

发送 EVENT_DHCP_START 消息来启动 DHCP 去获取 IP 地址,

private void handleConnectedState() {

setPollTimer();

mLastSignalLevel = -1;

if (!mHaveIPAddress && !mObtainingIPAddress) {

mObtainingIPAddress = true;

mDhcpTarget.obtainMessage(EVENT_DHCP_START).sendToTarget();

}

}

然后再广播发送 NETWORK_STATE_CHANGED_ACTION 这个 Intent

case EVENT_NETWORK_STATE_CHANGED:

if (result.state != DetailedState.DISCONNECTED || !mDisconnectPending) {

intent = new

Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION);

intent.putExtra(WifiManager.EXTRA_NETWORK_INFO,

mNetworkInfo);

if (result.BSSID != null)

intent.putExtra(WifiManager.EXTRA_BSSID, result.BSSID);

mContext.sendStickyBroadcast(intent);

}

break;

WifiLayer 注册了接收 NETWORK_STATE_CHANGED_ACTION 这个 Intent,所以它的相关

处理函数 handleNetworkStateChanged 会被调用,

当 DHCP 拿到 IP 地址之后,会再发送 EVENT_DHCP_SUCCEEDED 消息,

private class DhcpHandler extends Handler {

public void handleMessage(Message msg) {

switch (msg.what) {

case EVENT_DHCP_START:

if (NetworkUtils.runDhcp(mInterfaceName, mDhcpInfo)) {

event = EVENT_DHCP_SUCCEEDED;

}

WifiLayer 处 理 EVENT_DHCP_SUCCEEDED 消 息 , 会 再 次 广 播 发 送

NETWORK_STATE_CHANGED_ACTION 这个 Intent,这次带上完整的 IP 地址信息。

case EVENT_DHCP_SUCCEEDED:

mWifiInfo.setIpAddress(mDhcpInfo.ipAddress);

setDetailedState(DetailedState.CONNECTED);

intent = new

Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION);

intent.putExtra(WifiManager.EXTRA_NETWORK_INFO, mNetworkInfo);

mContext.sendStickyBroadcast(intent);

break;

至此为止,整个连接过程完成。

问题:

目前的实现不支持 Ad-hoc 方式。

上一页  1 2 3 4 5 

Tags:Android 移植 wifi

编辑录入:coldstar [复制链接] [打 印]
赞助商链接