Android 锁屏后无法接收UDP

关于部分Android手机厂商默认关闭系统UDP问题解决方案 作者:贺有江 时间:2019-05-14 目录 前言 背景 问题 解决方案 前言 本文档主要面向Android端研发同学,所有涉及到UDP数据收发的场景均可参照借鉴; 背景 ​在飞利浦空净项目后期,测试组在使用谷歌Pixel 2 手机测试Android端SoftAp配网时,发现SoftAp配网每次均出现配网超时错误提示,测试组自行有尝试更换路由器、4G热点等措施,... 阅读详情

今天遇到一个很神奇的问题。
应用中有一个服务,服务中使用线程池 进行UDP的接收和发送。
但是,当锁屏后,数据无论如何都接收不到,当打开锁屏的时候,数据接收又恢复正常了。

并且,使用电源锁也没有任何效果。

  PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); 
  wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "xxxxx"); 
  if(wl!=null) wl.acquire(); 

感到非常不解,于是查找网上的资料,发现

有些Android机型,在锁屏后,会休眠UDP(但是TCP不会被休眠)  

究其原因,应该是锁屏后,某些Android设备为了省电,阻止了组播的接收,但没有阻止单播的接收,所以,锁屏后,UDP接收不到数据,而TCP可以接收到数据。

详见 android锁屏休眠后,socket被休眠

安卓UDP接收广播数据 1、可先在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock;具体如下: 阅读详情

相关推荐

Android客户端接收PC端UDP广播

Android作为客户端,PC端作为服务器端:实现服务器端(PC)发送广播消息,Android作为客户端,不断监听服务器端指定的端口发来的消息,从而实现对Android客户端应用的控制。

u012106397的专栏 7962

wifi网络下熄屏后无法接收UDP广播

@@ -2285,6 +2285,10 @@ public class DatabaseHelper extends SQLiteOpenHelper { loadIntegerSetting(stmt, Settings.Global.LOW_BATTERY_SOUND_TIMEOUT, R.integer.def_low_b...

shark1621的博客 1817

Android UDP广播 客户端循环发送与接收

public class UdpBroadcast {private int iReceivePort = 0; //接收到消息的端口号private static final int TIMEOUT = 200; // 设置超时为200msprivate String udpresult; //服务器返回的消息/** * udp广播 */public String doUdpFind(Strin

Moes 4971

【Broadcast】Android8.0 静态receiver接收不到隐式广播

Android8.0的新特性值得注意一下,不然会出现很多莫名的问题。。。 后台执行限制 Android 8.0 为提高电池续航时间而引入的变更之一是,当您的应用进入已缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。 此外,为提高设备性能,系统会限制未在前台运行的应用的某些行为。具体而言: 现在,在后台运行的应用对后台服务的访问受到限制。 应用无法使用其清单注册大部分隐式广...

明朗晨光的专栏 1万+

UDP安卓服务器端接收和显示(含代码demo,16进制接收显示)

安卓UDP通信UDP协议简介套接字socketUDP首部格式 UDP协议简介 UDP属于传输层协议,属于TCP/IP协议中的一部分,UDP是不具有可靠性的数据报协议,因此可以根据需要设定重传机制,适合高速传输和实时性有较高要求的网络。 套接字socket 在使用TCP/UDP时,会广泛时会广泛使用到套接字(socket)的API,应用程序利用套接字,可以设置对端的IP地址,端口号,实现数据的发送与...

weixin_43155076的博客 1749

android 广播发送接收UDP

1、用来测试Android手机为啥接收不到UDP广播报文。

android 接收锁屏广播

privateBroadcastReceiverscreenoffReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){Log.i(TAG,"screenoff");...

weixin_34006468的博客 560

从‘包饺子’到‘包络线’:一个生活化比喻讲透长期与短期成本决策

本文通过饺子馆经营的生活化比喻,深入浅出地解析了长期与短期成本决策的核心逻辑。从调整人力(可变成本)到扩建厨房(固定成本),揭示了包络线理论在商业决策中的实际应用,帮助企业主在规模经济与成本控制间找到平衡点。

weixin_32006655的博客 342

android 添加一个解锁服务器,android上搭建mina服务器锁屏后无法接受数据包

在做一个项目, 有一台android需要实时接受其它客户端的udp数据包(包括在锁屏的状态下), 我使用了mina框架, 在未锁屏的时候, 是能够正常的接受到数据包的, 但是一旦锁屏了就再也无法接受到数据包了, 直到唤醒屏幕。以下是我service中的代码:public class ListenerService extends Service {private PowerManager.Wak...

weixin_28007513的博客 323

秋叶ComfyUI整合包:一键部署AI绘画工作流,解决环境配置难题

在AI绘画和生成式AI领域,Stable Diffusion作为开源的扩散模型,为图像生成提供了强大的技术基础。其核心原理是通过学习数据分布,对随机噪声进行逐步去噪,最终生成高质量的图像。这项技术的价值在于极大地降低了专业图像创作的门槛,并推动了AIGC(人工智能生成内容)在艺术设计、游戏开发、广告营销等场景的广泛应用。然而,其典型工作流实现工具ComfyUI,在实际部署中常因Python环境、PyTorch版本与CUDA驱动之间的复杂依赖关系而受阻,尤其是面对NVIDIA 30系、40系及未来50系等不同

优快云头条 674

【Unity报错】Unity导入海康SDK 报错 DllNotFoundException: PlayCtrl assembly

2.尝试按网上其他的办法(包括使用depengs查看dll依赖等)1.先检查Plugins文件夹中是否存在PlayCtrl文件。3.如果网上查阅的办法都不能解决,请继续往下看。更换低版本的SDK库文件。

weixin_42968584的博客 1127

Android上UDP组播无法接收数据的问题

  最近,想做一个跨平台的局域网的文件传输软件,思路是组播设备信息,TCP连接传输文件。于是进行了一次简单的UDP组播测试,发现Android对于UDP组播接收数据的支持即极为有限。 部分代码如下 1 package com.hsocket.Udp; 2 3 import java.io.IOException; 4 import java.net.Datag...

1937

Ubuntu中snap简单介绍

通过Snap可以安装众多的软件包。需要注意的是,snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间 介绍一些常用命令,有点类似docker 1、查看已经通过snap安装的snap包 snap list可以查看 2、可以搜索想要的snap包,例如tomcat snap search tomcat

icanflying的博客 4万+

Android设备一对多录屏直播--(UDP组播连接,Tcp传输)

转载请注明出处:https://blog.youkuaiyun.com/sunmmer123 近期需要学习流媒体知识,做一个Android设备相互投屏Demo,因此找到了这个博主写的,看了很久也同该博主交流探索了许久,非常感谢该博主。 这位博主介绍了Android之间互相的录屏直播 –点对点传输(tcp长连接发送h264),详细介绍了h264的数据结构,对于刚学习流媒体的人来说是很好的福利,不多说...

sunmmer123的博客 1万+

uniapp串口通信实战:从零搭建物联网设备控制App(附完整代码)

本文详细介绍了如何使用Uniapp实现串口通信,从零搭建物联网设备控制App。内容涵盖环境配置、串口初始化、数据收发、错误处理等核心功能,并提供了完整的代码示例,帮助开发者快速掌握跨平台串口通信技术,适用于智能农业、工业自动化等物联网场景。

weixin_30369041的博客 597

【迁移学习综述】

迁移学习的目标是将某个领域或任务上学习到的知识应用到不同的但相关的领域或问题中。迁移学习的研究来源于一个观测:人类可以将以前的学到的知识应用于解决新的问题,更快的解决问题或取得更好的效果。迁移学习被赋予这样一个任务:从以前的任务当中去学习知识(knowledge)或经验,并应用于新的任务当中。换句话说,迁移学习目的是从一个或多个源任务(source tasks)中抽取知识、经验,然后应用于一个目标领域(target domain)当中去。

afadgas的博客 4321

Android录屏通过udp共享到其它手机

简介发送的是H264裸流到其它设备上解码显示,H264可见我整理的笔记: ttp://blog.youkuaiyun.com/pds574834424/article/details/78150474 整体项目结构和使用方式如下: 先在手机上运行ScreenReceiveDemo接收APP,再在其它手机上运行主项目app并输入接收APP手机的IP地址。录屏发送5.0开放了录屏API,在使用录屏时会

pds574834424的专栏 3373

ESP32S3 TLS 握手WIFI可用但是在蜂窝热点下卡死:排查方法与根因

设备卡在等。

摸鱼专家 87

[Android网络]如何接收UDP广播

背景 UDP 协议是 Android 开发中很少用到的,因为不稳定的连接会带来很多无法控制的结果。但是 UDP 协议优点也很明显,还是有很多应用场景的,比如局域网中寻找 IP 地址。 一个 WLAN 中通常会采用 DHCP 动态分配 IP 地址,于是每一个设备的 IP 地址都无法确定,在局域网项目中,客户端与服务端通信的前提就是知道对方的 IP 地址,这里就需要用到 UDP 广播的方式实现。 UD...

weixin_34120274的博客 1256

基于Simscape的双PID比例调速阀与比例溢流阀液压控制系统建模与仿真

本文提出了一种基于Simscape的双PID液压控制系统建模方法,通过比例调速阀和比例溢流阀实现液压缸速度与压力的解耦控制。系统采用Simscape Fluids物理建模,精确模拟液压元件非线性特性。文章详细介绍了液压被控对象建模过程,包括动力单元、比例阀组合建模、执行机构及传感器配置。同时设计了双PID控制器架构,分别控制速度环和压力环,并给出参数整定建议。该方法通过物理网络直接模拟流体流动和压力动态,相比传统传递函数法具有更高精度,为液压系统仿真提供了有效解决方案。

AI的内部世界的博客 284

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android中关于udp发送、接收的一些重点总结

最近做了一个关于udp的项目,分为移动端和服务器端,移动端用来给服务器发送数据同时接收服务器返回的数据,服务器当然是接收客户端数据了,然后返回一定的信息。期间遇到了很多问题,但最后还是解决了,所以想和他人分享一下下,希望可以帮到一些开发的朋友。       做这个项目时,在网上也是查了一些资料,发现很多朋友在客户端接收服务器返回数据时出了问题,发送几乎没有什么问题。       这些问题的发生

sinat_27681957的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android udp接收阻塞,android udp接收

address=InetAddress.getByName(url);int i=0;byte[] receiveByte = new byte[1316];Log.i("2015-6-3","thread running");dataPacket = new DatagramPacket(receiveByte, receiveByte.length);if(address==NULL){try...

weixin_39594103的博客 452

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android收发UDP报文详解

参考链接如下,写的非常非常好,我只是把他们写的优秀的搬过来做笔记,防止以后忘记,本博客所有内容均经过代码验证 https://blog.youkuaiyun.com/ITermeng/article/details/73482669?locationNum=9&fps=1 https://blog.youkuaiyun.com/weixin_37716758/article/details/81359092 ...

u014453443的博客 3373

基于Android的UDP自动发现(接收与发送)

TCP和UDP的区别: TCP(Transimission Control Protocol)即 传输控制协议:是面向连接的协议, 强调稳定可靠的连接,建立连接“三次握手”,断开连接需要“四次分手”,现常用于网络间视频与语音通话,及相应的网络间可靠的信息流通。 UDP(User Datagram Protocol)即 用户数据报协议:是面向报文的协议,两端无需建立连接即可传输数据,速度和效率都

Zeners的博客 7377

安卓真机上UDP程序收不到PC机数据包的解决方法

最近在写安卓UDP通信程序时遇到这个问题,就是在安卓模拟器上可以实现收发,但是放到真机上就只能发收不到PC机发来的数据。在网上查了一些资料,发现有很多朋友也遇到这个问题,都没有非常明确的解决方法,我经过尝试终于在真机上收到了PC机发的数据,跟大家分享一下。我用的是eclipse开发环境,安卓虚拟机为2.2版本。为方便讲解,先贴几张图:                图一 安卓模拟器界面

NEC_xhf的专栏 5099
上一篇: Android框架演化
下一篇: Android 插件化 核心技术
氦客
氦客 优质创作者: 移动开发技术领域 优质创作者: 移动开发技术领域 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄11年 5万+粉丝 448原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值