Android屏幕熄灭状态下的服务发现可行方案求解
无UDP广播支持下的局域网设备发现方案咨询
背景
我的Android应用可将设备用作远程传感器,通过本地WiFi网络向同一局域网内的PC端应用传输传感器数据。PC端支持接入多台设备,当前采用UDP广播实现设备发现功能。
熄屏状态下UDP消息被阻断的问题
屏幕熄灭后,设备无法接收UDP数据包,直接导致设备发现功能失效。我已测试过多种常见的临时解决方案,但均无法稳定解决问题:
- Partial Wake Lock
- Wifi Lock
- 熄屏时关闭并重新开启Wi-Fi
- 熄屏时重新绑定UDP Socket
- 调整上述操作的执行时机
仅UDP设备发现功能受此问题影响,用于数据通信的TCP连接完全正常:熄屏后TCP数据包仍可正常收发,甚至可以手动输入设备IP完成连接。我已通过Wireshark在多台设备上验证了这一现象,因此可以排除电池优化、休眠/Doze模式、权限配置等因素,问题根源是设备存在无法可靠禁用的UDP数据包过滤机制。
约束条件下的服务发现方案诉求
现有约束条件:
- 无互联网连接
- 必须在屏幕熄灭状态下正常工作
- UDP数据包被阻断
目前多数服务发现协议要么基于UDP,要么依赖中央服务器,请问是否存在符合上述约束的设备发现解决方案?
相关参考信息
关于UDP熄屏失效问题的相关讨论:
- Android平台官方讨论组中关于该现象的技术话题
- Stack Overflow上“部分设备熄屏时无法接收UDP广播”的提问
- Stack Overflow上“使用SSDP无法正常接收UDP数据包”的提问
- Stack Overflow上“Android休眠后无UDP广播数据包(未进入休眠模式)”的提问
内容的提问来源于stack exchange,提问作者Crigges
相关产品推荐
相关产品推荐

