admin管理员组文章数量:1577519
1、写在前面:
2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的。所以为了解决这个问题,提出一个思路,让手机开启热点,然后把硬件链接到手机的热点上。再由手机告诉硬件去链接用户家里的wifi,这样手机和设备就都能连接到用户家的wifi了,就能愉快的进行通信了。那么怎么解决这个问题呢?继续往下看!
2、实现思路:
1、获取当前网络wifi名称
2、开启热点
3、让用户输入wifi密码
4、获取当前网络的广播地址,扫描设备
5、给设备发命令,配置信息
6、把绑定的设备存起来
7、循环4-6直到没有新设备了
8、退出的时候先把设备信息提交
9、关闭热点、打开wifi
3、中间遇到坑:
测试真机: 魅族4 Android5.1 、小米5 Android 7.0
这里就不说怎么进行UDP通信了,只说在中间遇到的问题。两个坑吧,一个是开启热点兼容6.x+,另一个是获取广播地址,兼容wifi环境,以太网环境,无网络环境。
3.1 开启热点,兼容android6.x
这里先提供一个开启/关闭热点的工具类WifiUtils:
import android.wifi.WifiConfiguration;
import android.wifi.WifiManager;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* 作者:dell or Xiaomi Li
* 时间: 2018/1/17
* 内容:打开/关闭热点
* 最后修改:
*/
public class WifiUtils {
private final static String APName = "XiaomiLi8";
private final static String APPassword = "5311925577";
/**
* 创建热点
*
* @return
*/
public static boolean CreatHotspot(WifiManager wifiManager) {
boolean request;
//开启热点
if (wifiManager.isWifiEnabled()) {
//如果wifi处于打开状态,则关闭wifi,
wifiManager.setWifiEnabled(false);
}
WifiConfiguration config = new WifiConfiguration();
config.SSID = APName;
config.preSharedKey = APPassword;
config.hiddenSSID = false;//是否隐藏网络
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.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.status = WifiConfiguration.Status.EN
版权声明:本文标题:wifi udp android,Android开启热点进行UDP通信中的坑 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726808269a1085250.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论