公司业务是APP通过连接智能锁临时开启的AP热点,与智能锁进行通信,然后把可用的WIFI名称,密码传输到锁端,智能锁通过WiFi名与密码进行联网。在实际的使用过程中发现有部分手机(vivo y51s)虽然已经连接上智能锁开启的AP热点,但是Socket连接会报错,导致整个流程无法继续,设备AP配网失败,无法连接可用WiFi。
通过日志分析,是在这一行报错的
这一行是Android系统原始的API,这一行报错并没有什么办法可以解决。百思无果,决定试一下手机到底能不能ping通设备。
通过 adb shell ping 192.168.1.1命令发现,手机在部分时间是可以ping通智能锁的。这意味着还是有一定概率可以连上的,我们的业务场景只需要连接成功一次,那就可以了。
接下来对连接流程进行优化
/**
* 尝试连接socket
*/
private Socket connectSocket(InetAddress address, int port) {
Socket mSocket = null;
while (!isStop && mSocket == null) {