Android WiFi热点怎么开发
发表于:2024-10-04 作者:千家信息网编辑
千家信息网最后更新 2024年10月04日,这篇文章主要介绍"Android WiFi热点怎么开发"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Android WiFi热点怎么开发"文章能帮助大家解决问
千家信息网最后更新 2024年10月04日Android WiFi热点怎么开发
这篇文章主要介绍"Android WiFi热点怎么开发"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Android WiFi热点怎么开发"文章能帮助大家解决问题。
创建热点
1、根据加密类型、密码、是否隐藏等参数来创建热点
static WifiConfiguration createWifiConfig(String SSID, @WifiSecurityType int wifiCipherType, String password, boolean hiddenSSID) { WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.SSID = convertToQuotedString(SSID); wifiConfiguration.hiddenSSID=hiddenSSID;//是否隐藏热点true=隐藏,如果隐藏需要其他设备手动添加网络 switch (wifiCipherType) { case WifiSecurityType.SECURITY_NONE: wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); break; case WifiSecurityType.SECURITY_WEP: wifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE); wifiConfiguration.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN); wifiConfiguration.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED); if (!TextUtils.isEmpty(password)) { int length = password.length(); // WEP-40, WEP-104, and 256-bit WEP (WEP-232?) if ((length == 10 || length == 26 || length == 58) && password.matches("[0-9A-Fa-f]*")) { wifiConfiguration.wepKeys[0] = password; } else { wifiConfiguration.wepKeys[0] = '"' + password + '"'; } } break; case WifiSecurityType.SECURITY_WPA_PSK: wifiConfiguration.allowedKeyManagement.set(KeyMgmt.WPA_PSK); if (!TextUtils.isEmpty(password)) { if (password.matches("[0-9A-Fa-f]{64}")) { wifiConfiguration.preSharedKey = password; } else { wifiConfiguration.preSharedKey = '"' + password + '"'; } } break; case WifiSecurityType.SECURITY_WPA_EAP: wifiConfiguration.allowedKeyManagement.set(KeyMgmt.WPA_EAP); wifiConfiguration.allowedKeyManagement.set(KeyMgmt.IEEE8021X); wifiConfiguration.enterpriseConfig = new WifiEnterpriseConfig(); int eapMethod = 0; int phase2Method = 0; wifiConfiguration.enterpriseConfig.setEapMethod(eapMethod); wifiConfiguration.enterpriseConfig.setPhase2Method(phase2Method); if (!TextUtils.isEmpty(password)) { wifiConfiguration.enterpriseConfig.setPassword(password); } break; default: break; } return wifiConfiguration; }
然后调用WifiManager的setWifiApEnabled方法来设置wifiConfiguration,因为是隐藏的,需要通过反射:
try { Method method = mWifManager.getClass().getMethod( "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE); boolean enable = (Boolean) method.invoke(mWifManager, config, true); if (enable) { Log.d("WiFi", "热点已开启"); } else { Log.d("WiFi", "创建热点失败"); } } catch (Exception e) { e.printStackTrace(); }
关闭热点
关闭热点比较简单,也是用上面的方法,第二个参数传false就行了:
public void closeWifiAp() { try { Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); method.invoke(mWifiManager, null, false); } catch (Exception e) { e.printStackTrace(); } }
监听热点状态
热点的状态可以通过广播的方式来监听:
public static final String WIFI_AP_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_AP_STATE_CHANGED";
不过这个变量是隐藏的,只能直接通过值来注册广播:
IntentFilter filter = new IntentFilter(); filter.addAction("android.net.wifi.WIFI_AP_STATE_CHANGED");
然后在广播中获取state:
int state = intent.getIntExtra("wifi_state", 0);
wifi热点有如下几种状态:
#WIFI_AP_STATE_DISABLED #WIFI_AP_STATE_DISABLING#WIFI_AP_STATE_ENABLED#WIFI_AP_STATE_ENABLING#WIFI_AP_STATE_FAILED
其他API:
获取WiFI热点当前状态,返回值就是上面五种状态:
public int getWifiApState()
判断WiFi热点是否打开:
public boolean isWifiApEnabled()
获取当前wifi热点的WifiConfiguration:
public WifiConfiguration getWifiApConfiguration()
关于"Android WiFi热点怎么开发"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
热点
状态
开发
方法
知识
广播
参数
行业
监听
不同
实用
内容
变量
可以通过
实用性
实际
密码
就是
手动
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库需求分析的步骤是
教育资源平台软件开发
滇教通网络技术
计算机网络技术竞赛项目
数据库生成
宋朝思维导图软件开发
医学类常用数据库有哪些
网络技术在在以下哪方面
e3服务器处理器的性能
网络技术公司网络维护
冰原守卫者怎么变更小服务器
数据库 时间
数据库表更新最快
上海广达mis软件开发
专网访问服务器端口异常原因
链接数据库和链接字符串一样吗
在什么部门申请软件开发
中学生 网络安全知识
vr模拟实验软件开发
软件开发公司年度运营计划
武汉软件开发公司排名及老板
游戏手机数据库
dir数据库
山西国网软件开发
现在什么数据库比较常用
15软件开发公司
数据库连接测试sql
数据库 行级权限
网络安全教育心得体会范文
打印服务器能管理几台打印机