关于部分Android手机厂商默认关闭系统UDP问题解决方案

作者:贺有江

时间:2019-05-14


目录

  • 前言
  • 背景
  • 问题
  • 解决方案

前言


本文档主要面向Android端研发同学,所有涉及到UDP数据收发的场景均可参照借鉴;

背景


        ​在***项目开发过程中,使用谷歌Pixel 2 手机测试Android端SoftAp配网时,发现SoftAp配网每次均出现配网超时错误提示,通过多次尝试更换路由器、4G热点等措施,均为同样错误提示信息。App/Wi-Fi端通过log可以确定,SoftAp配网期间Wi-Fi 端和App端的TCP可以正常连接并通信,但是始终未收到来自Wi-Fi端的广播数据报文,App端也曾提供单独的UDP Demo App协助测试组测试该问题,但均以失败告终,仔细排查后,发现“谷歌Pixel 2 手机”默认关闭了系统所有UDP广播功能;(猜测是由于手机开启UDP广播功能不仅耗电,而且占用系统资源。)

问题


​       Android部分手机厂商(例如:“谷歌Pixel 2 手机”)对手机系统进行了优化,默认关闭了系统所有UDP广播功能;

解决方案


1.在使用UDP接收数据之前先实例化一个WifiManager.MulticastLock对象wifiLock,并调用wifiLock.acquire()锁定Wi-Fi多播。

WifiManager manager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiManager.MulticastLock wifiLock  = manager.createMulticastLock("localWifi");
wifiLock.acquire();<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值