一、毕业一年了,一直搞wifi。还是一头雾水。
1.WificondControl.java
private class ScanEventHandler extends IScanEvent.Stub {
…
@Override
public void OnScanResultReady() {//从scanner_impl.cpp调用的
Log.d(TAG, “Scan result ready event”);
mWifiMonitor.broadcastScanResultEvent(mIfaceName);//下发到WifiMonitor发送广播
}
…
}
2.WifiMonitor.java
利用handler发送SCAN_RESULTS_EVENT消息
3.WificondScannerImpl.java
handler收到消息:
处理:
cancelScanTimeout();//取消扫描时间超时?
pollLatestScanData();
第二个函数:
mLastScanSettings.singleScanEventHandler.onScanStatus(WifiNative.WIFI_SCAN_RESULTS_AVAILABLE);
调用到接口singleScanEventHandler的onScanStatus方法,而它的实现在两个状态机中:
如果是单次扫描状态机:
WifiSingleScanStateMachine 状态机收到消息:
sendMessage(CMD_SCAN_RESULTS_AVAILABLE);
如果是后台扫描状态机: