🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
WifiService构造函数的代码如下所示。 **WifiService.java::WifiService构造函数** ~~~ WifiService(Context context) { mContext = context; // 从系统属性“wifi.interface”中取出无线网络设备接口名。默认值为“wlan0” mInterfaceName = SystemProperties.get("wifi.interface", "wlan0"); // 创建一个WifiStateMachine对象,它是WifiService相关模块中的核心 mWifiStateMachine = new WifiStateMachine(mContext, mInterfaceName); /* RSSI轮询机制。RSSI为Receive Signal Strength Indication(接收信号强度指示) 的缩写,它反映了无线网络质量的好坏。WPAS支持的RSSI信息包括:接收信号强度、连接速度 (link speed)噪声强度(noise)和频率。在WPAS中,RSSI信息由wpa_signal_info 结构体来表达。 */ mWifiStateMachine.enableRssiPolling(true); // 和BatteryStatsService交互。感兴趣的读者可阅读《深入理解Android:卷Ⅱ》5.5.2节 mBatteryStats = BatteryStatsService.getService(); ......// 广播事件注册等处理。由于篇幅问题,本章将略去一些重要程度较低的代码 HandlerThread wifiThread = new HandlerThread("WifiService"); wifiThread.start(); // mAsyncServiceHandler用于AsyncChannel,其交互对象来自WifiManager mAsyncServiceHandler = new AsyncServiceHandler(wifiThread.getLooper()); // mWifiStateMachineHandler也用于AsyncChannel,其交互对象来自WifiStateMachine mWifiStateMachineHandler = new WifiStateMachineHandler(wifiThread.getLooper()); ......// 其他一些工作 } ~~~ WifiService构造函数中主要工作是创建一些核心对象,其中: * WifiStateMachine是WifiService中的核心,是本章分析的重点对象。 * mAsyncServiceHandler和mWifiStateMachineHandler都和AsyncChannel相关,与它们交互的Handler分别位于WifiManager和WifiStateMachine中。 马上来看最重要的WifiStateMachine。