android开启热点softap模式,[RK3288][Android6.0] Wifi开启热点(SoftAP)流程小结

 2023-09-18 阅读 15 评论 0

摘要:Platform: Rockchipandroid 热点 适配、OS: Android 6.0Kernel: 3.10.92手机ap热点怎么开。在Settings中选择要打开wifi热点功能:调用流程如下:onPreferenceChange -> TetherSettings.javastartProvisioningIfNecessary ->startTethering ->mWifiApEnabler.s

Platform: Rockchip

android 热点 适配、OS: Android 6.0

Kernel: 3.10.92

手机ap热点怎么开。在Settings中选择要打开wifi热点功能:

0818b9ca8b590ca3270a3433284dd417.png

调用流程如下:

onPreferenceChange ->  TetherSettings.java

startProvisioningIfNecessary ->

startTethering ->

mWifiApEnabler.setSoftapEnabled ->

setSoftapEnabled -> WifiApEnabler.java

setWifiTethering ->     TetherUtil.java

wifiManager.setWifiApEnabled ->

mService.setWifiApEnabled ->

setWifiApEnabled ->    WifiServiceImpl.java

mWifiController.obtainMessage(CMD_SET_AP,...).sendToTarget ->

mWifiStateMachine.setHostApRunning -> ApStaDisabledState 类

setHostApRunning ->  WifiStateMachine.java

sendMessage(CMD_START_AP, wifiConfig); ->

startSoftApWithConfig(config) ->  SoftApStartingState类

startSoftApWithConfig ->

run -> WifiStateMachine.java

mNwService.startAccessPoint ->

startAccessPoint ->  NetworkManagementService.java

mConnector.execute("softap", "startap");

execute ->    NativeDaemonConnector.java

execute(DEFAULT_TIMEOUT, cmd, args);

executeForList ->

makeCommand

mOutputStream.write    //通过socket发送command给netd. mOutputStream在listenToSocket()初始化.

Netd接收到命令后:

SocketListener::runListener -> SocketListener.cpp

onDataAvailable ->

FrameworkListener::onDataAvailable ->    FrameworkListener.cpp

FrameworkListener::dispatchCommand ->

c->runCommand ->    //支持各种命令,这里是softap.

CommandListener::SoftapCmd::runCommand

sSoftapCtrl->startSoftap ->     //sSoftapCtrl在CommandListener::CommandListener()构造函数中赋值,是类SoftapController

SoftapController::startSoftap  -> SoftapController.cpp

pid = fork    //创建一个进程来处理.

execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE,"-e", WIFI_ENTROPY_FILE,HOSTAPD_CONF_FILE, (char *) NULL)

static const char HOSTAPD_BIN_FILE[] = "/system/bin/hostapd";

所以本质上执行的是/system/bin/hostapd

自己操作也可以通过命令行方式开启热点, 例如:

hostapd -e /data/misc/wifi/entropy.bin /data/misc/wifi/hostapd.conf

参考网友画的网络框架图,因此分三个部分,分别是WIFI, DNS以及SoftAP.

0818b9ca8b590ca3270a3433284dd417.png

参考:

http://blog.csdn.net/jshazk1989/article/details/8988444

http://blog.csdn.net/tony_hrwk/article/details/17550497

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/76526.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息