admin管理员组文章数量:1620390
目录
第一步:连接指定WIFI
第二步:注册广播监听Wifi变更和连接状态
第三步:使用Socket发送消息
第一步:连接指定WIFI
连接硬件设备暴露出来的Wifi,Wifi名称都应该有规定的格式。
连接指定Wifi前,自己需要组装好 WifiConfiguration
//WIFI密码类型
const val WIFICIPHER_WPA = 0
const val WIFICIPHER_WEP = 1
const val WIFICIPHER_NOPASS = 2
/**
* 创建新的WIFI连接对象 WifiConfiguration
* type Wifi的密码类型
*/
fun createWifiInfo(SSID: String, password: String,
type: Int) : WifiConfiguration{
val config = WifiConfiguration()
config.allowedAuthAlgorithms.clear()
config.allowedGroupCiphers.clear()
config.allowedKeyManagement.clear()
config.allowedPairwiseCiphers.clear()
config.allowedProtocols.clear()
config.SSID = "\"" + SSID + "\""
when (type) {
Constant.WIFICIPHER_NOPASS -> {
config.wepKeys[0] = "\"" + "\""
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE)
config.wepTxKeyIndex = 0
}
Constant.WIFICIPHER_WEP -> {
config.preSharedKey = "\"" + password + "\""
config.hiddenSSID = true
config.allowedAuthAlgorithms
.set(WifiConfiguration.AuthAlgorithm.SHARED)
config.allowedGroupCiphers
.set(WifiConfiguration.GroupCipher.CCMP)
config.allowedGroupCiphers
.set(WifiConfiguration.GroupCipher.TKIP)
config.allowedGroupCiphers
.set(WifiConfiguration.GroupCipher.WEP40)
config.allowedGroupCiphers
.set(WifiConfiguration.GroupCipher.WEP104)
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE)
config.wepTxKeyIndex = 0
}
Constant.WIFICIPHER_WPA -> {
config.preSharedKey = "\"" + password + "\""
config.hiddenSSID = true
config.allowedAuthAlgorithms
.set(WifiConfiguration.AuthAlgorithm.OPEN)
config.allowedGroupCiphers
.set(WifiConfiguration.GroupCipher.TKIP)
config.allowedKeyManagement
.set(WifiConfiguration.KeyMgmt.WPA_PSK)
config.allowedPairwiseCiphers
.set(WifiConfiguration.PairwiseCipher.TKIP)
// config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
config.allowedGroupCiphers
.set(WifiConfiguration.GroupCipher.CCMP)
config.allowedPairwiseCiphers
.set(WifiConfiguration.PairwiseCipher.CCMP)
config.status = WifiConfiguration.Status.ENABLED
}
}
return config
}
使用config连接Wifi
/**
* 连接指定Wifi
*/
private fun connectWifi(name: String, config: WifiConfiguration) {
//判断当前系统是否已经缓存有和 name相同的wifi
var isCon = false
//遍历当前系统所有保存的Wifi
val wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
for (c in wifiManager.configuredNetworks) {
//注意这里名字里面还有""
if (c.SSID.toString() == "\"$name\"") {
isCon = true
//如果有保存过的wifi,直接调用连接
WiFiUtil().connectWifiByReflectMethod(cworkId, wifiManager, config)
}
}
if (!isCon) {
//如果没有需要自己构建config连接wifi
connect(config)
}
}
/**
* 连接自己创建的Wifi
*/
private fun connect(config: WifiConfiguration) {
//获取构建好的WifiConfig的ID
val wcgID = wifiManager.addNetwork(config)
//重点。使用反射调用各版本系
版权声明:本文标题:智能家具实现Wifi连接和TCP简单通信,解决Wifi版本适配,连接没有网络的WIfi自动断开的问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728819007a1175216.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论