随身WiFi 深入研究 新发现 安装了绿芽 WiFi不关闭的方法

原创 徐梦斌  2021-10-19 18:12 

 

Android开机自动启动Wi-Fi热点的方法
简介
Android(4.4)的Wi-Fi子系统目前支持三种工作模式:

Station
Access Point
Wi-Fi Direct
对于某些设备来说,可能需要Wi-Fi开机就进入到AP(Access Point)模式,然后扮演一个共享热点的角色。

WifiManager类是Android开放给应用开发者的主要接口,里面提供了Station和AP模式下的常用函数,AP相关的主要有(这些目前是隐藏的,未对应用开发者开放出来):

setWifiApEnabled
getWifiApState
isWifiApEnabled
getWifiApConfiguration
setWifiApConfiguration
有关这些接口的详细用法,可以参见代码中的“framework/base/wifi/java/android/net/wifi/WifiManager.java”。

要在开机过程中开启AP模式的话,我们只需要在一个合适的地方(比如ConnecitivityService.java)调用WifiManager就可以了。

修改步骤
ConnectivityService是Android的连接管理服务,它由SystemServer启动,负责各个网络的连接策略管理,以及网络分享(Tether)等。我们在其构造函数的最后加上我们的逻辑即可。

复制代码
import android.net.wifi.WifiManager;
import android.net.wifi.WifiConfiguration;

 

// 构造函数中启动AP
public ConnectivityService(Context context, INetworkManagementService netd,
INetworkStatesService statsService, INetworkPolicyManager policyManager) {

this(context, netd, statsService, policyManager, null);

// 启动AP模式
final WifiManager mWifimanager;
final WifiConfiguration mWifiConfig;

mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
mWifiConfig = mWifiManager.getWifiApConfiguration();

mWifiManager.setWifiApEnabled(mWifiConfig, true);
}
复制代码
以下两个文件中也有相关操作,可以参考一下:

packages/apps/Setttings/src/com/android/settings/wifi/WifiApEnabler.java
packages/apps/Setttings/src/com/android/settings/TetherSettings.java
引入问题
由于在ConnectivityService里偷偷启动了AP模式,Settings启动后,“无线热点”中的CheckBox的状态会与真实状态不同步。需要对CheckBox根据getWifiApState做初始化动作。

本文地址:http://shangcenglou.com/34162.html
关注我们:请关注一下我们的微信公众号:扫描二维码汇总各种游戏活动,玩家活动,有奖活动的公众号,公众号:heimaoseoer
版权声明:本文为原创文章,版权归 徐梦斌 所有,欢迎分享本文,转载请保留出处!

评论已关闭!