Android framework 创建wifi热点hot spot

代码是在android9.0源码里修改的,有些api是标记的@system api,应用层如果调用不到,可以尝试用反射调用。

        WifiManager wifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
        public void createWifiHotSpot(String ssid, String psw) {
            if(TextUtils.isEmpty(ssid) || wifiManager == null) {
                return;
            }
            WifiConfiguration wificonfig = generateWifiApConfig(ssid, psw);
            boolean configAvailable = wifiManager.setWifiApConfiguration(wificonfig);
            if(!wifiManager.isWifiApEnabled()) {
                wifiManager.startSoftAp(wificonfig);
            } 
        }
        
       private WifiConfiguration generateWifiApConfig(String ssid, String password) {
            WifiConfiguration config = new WifiConfiguration();
            config.SSID = ssid;
            if(TextUtils.isEmpty(password)) {
                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
            } else {
                config.preSharedKey = password;
                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
            }
            return config;
        }

创建热点可以调用 startSoftAp(),还可以这样:

ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
    connectivityManager.startTethering(ConnectivityManager.TYPE_MOBILE, true, new ConnectivityManager.OnStartTetheringCallback() {
    @Override
    public void onTetheringFailed() {
    }

    @Override
    public void onTetheringStarted() {
    }
});

ConnectivityManager.TYPE_MOBILE 值为0,应用层引用不到可以传0。
WifiConfiguration.KeyMgmt.WPA2_PSK 值为4。

如果热点是开启的,创建热点会失败,导致热点关闭,可以先关闭热点,然后监听热点状态的广播进行重新创建。

//关闭热点
wifiManager.stopSoftAp();
//或者
connectivityManager.stopTethering(ConnectivityManager.TYPE_MOBILE);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值