问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mina无法接udp数据包

发布网友 发布时间:2023-07-13 12:38

我来回答

1个回答

热心网友 时间:2024-12-14 03:32

在做一个项目, 有一台android需要实时接受其它客户端的udp数据包(包括在锁屏的状态下), 我使用了mina框架, 在未锁屏的时候, 是能够正常的接受到数据包的, 但是一旦锁屏了就再也无法接受到数据包了, 直到唤醒屏幕。

以下是我service中的代码:

public class ListenerService extends Service {

private PowerManager.WakeLock mWakeLock;
private MINAServer server;

public static long lastMsgReceived = System.currentTimeMillis();

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onCreate() {

super.onCreate();

Log.i("log_info", "ListenerService onCreate");

try {

server = new MINAServer();

} catch (IOException e) {

e.printStackTrace();

}

acquireWakeLock();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

Log.i("log_info", "ListenerService onStartCommand");

// 启动一个定时器, 每隔32秒检测一次: lastMsgReceived 减去 当前时间。

Timer timer = new Timer();

timer.schele(new RecordConnTimes(), 0, 32 * 1000);

return super.onStartCommand(intent, flags, startId);

}

private void acquireWakeLock()

{

if (null == mWakeLock)

{

PowerManager pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE);

mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK| PowerManager.ON_AFTER_RELEASE,"");

if (null != mWakeLock)

{

mWakeLock.acquire();

}

}

}

@Override

public void onDestroy() {

if (null != mWakeLock)

{

mWakeLock.release();

mWakeLock = null;

}

super.onDestroy();

}

private class RecordConnTimes extends TimerTask {

@Override

public void run() {

Log.i("log_info", "RecordConnTimes run");

long currentTime = System.currentTimeMillis();

// 如果连续3次都没有接收到其它android端的广播, 则输出没有广播。

if (96 * 1000 <= currentTime - lastMsgReceived) {

Log.i("log_info", "大于等于3次没有接收到广播");

} else {

Message msg = new Message();

Bundle bundle = new Bundle();

Log.i("log_info", "小于3次没有接收到广播!!!");

}

}

}

}

下面是mina handler的messageReceived方法:

public void messageReceived(IoSession session, Object message)

throws Exception {

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");

Date curDate = new Date(System.currentTimeMillis()); //获取当前时间

if (message instanceof IoBuffer) {

IoBuffer buffer = (IoBuffer) message;

byte[] bb = buffer.array();

for (int i = 0; i < bb.length; i++) {

System.out.print((char) bb[i]);

}

System.out.println("");

System.out.println("");

IoBuffer buffer1 = IoBuffer.wrap("11".getBytes("UTF-8")); //返回信息给Clinet端

session.write(buffer1);

Log.i("log_info", "messageReceived, " + formatter.format(curDate));

}

// 一旦接受到广播就更新lastMsgReceived为当前时间

ListenerService.lastMsgReceived = System.currentTimeMillis();

}

请问我该怎么做才能让mina在锁屏的状态下也能接收到数据包呢? 还是说mina在android上达不到这样的要求呢。。?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
支付宝健康码变色规则 ...变绿码?昨天做了核酸检测结果是阴性,多久健康码从黄码变成绿码_百度... 母亲有乙肝孩子一定会有吗 ...的作文,600字,要有真实情感最好写心灵的。帮帮忙,必采纳。谢谢啦... ...自我介绍怎么写呀!,急急急!!!拜托各位谢谢啦!!_百度... 以“我身边的文明礼仪”为题写一篇作文,请各位大侠帮帮忙啦... 石家庄100平米房子改水电多少钱一平 石家庄居民水电煤气费都是多少钱? 石家庄水电一个月多少钱一个月多少钱 石家庄水电价格是多少钱 鱼腥草/墨旱莲/益母草/灯心草/赤芍/黄柏/倒扣草/丹参/牡丹皮/半枝莲/知... 倒挂草与倒扣草有什么区别 风雨花煲 倒扣草的好处是什么? 悲喜交加用英文怎么说 长寿花扦插方法图解(教你养护长寿花的窍门) 海南2022年高中合格考(海南省普通高中合格考)? 双十二取暖器推荐排行榜 2022年海南海口普通高中学业水平合格性考试时间:7月7日-8日 月季养殖方法与技巧图解(养护月季的注意事项) 花材的保养技术 海南还有会考吗 怎样去和一个没素质的人沟通呢拜托了各位 谢谢 如何与素质不高的人聊天? 燃煤电厂清洁生产标准和火电行业清洁生产评价体系区别是什么,哪一个... 为什么发电厂都在烧煤?清洁能源不能用吗?可以替代火力发电吗... 玛塞城离郫县有多远 王者荣耀6月6日平衡性调整削弱英雄有哪些 波特五力模型哪种在削弱公司竞争力 判断好的竞争对手的标准是什么?如何利用好的竞争对手来扼制坏的竞争对手... 为什么一战中俄国加入协约国,会削弱中央政府的控制力,以及导致俄国的社 ... 养老保险被冻结了,还能不能继续收钱? baidumina的安装包是什么 退休养老金银行卡被法院冻结了可以更换别的银行卡吗 org.apache.mina.filter.codec.protocoldecoderoutput在哪个jar包 mina 使用心跳包后如何处理业务逻辑 犯错回来要励志从新开始用什么词形容 形容犯了错误,下定决心要改正的语句和词语! 男,26岁长相幼稚是好事还是坏事呢 如果男的各方面都还好,但是脸上皮肤很粗,坑坑洼洼的,这样的男的... 西江长桌宴68元和48元区别 男孩的长相好不好? 628m=( )dm 1km=( )m 600m=( )km ...已经有半年了,没有反应,不痛不痒,请专家帮我看看是什么原因。_百度... 1km500m等于多少m 600km是指多少米啊,求解答 人在加拿大,护照和签证23年5月5日到期,但现在要办理新的中国护照,那签... 女主是总裁,男主是军人的小说 射洪车管所年检车辆收费标准 四川射洪农村商业银行股份有限公司电话是多少? 长城什么时候开始修建?