Programming 板


LINE

各位前辈大家好,小弟在此请教大家有关Android SocketChannel 使用上的一些问题,以下是程式需求以及遇到的瓶颈: 1. 在一远端系统上撰写了伺服器控制照相机,固定输出QQVGA尺寸 、JPEG格式的图档,只要有客户端程式发送需求,就撷取一张图 片回传给客户端,之後关闭连线,由於考虑到JPEG最复杂的档案 ,所以伺服器端截取的图档最大尺寸为20K bytes,後续JPEG图 档的头尾交由客户端处理搜寻。 2. 目前在Android系统开发客户端程式,版本为4.X,小弟先使用按 钮控制远端截取一张图片做测试,平均送收一张花费的时间大约 140~170ms;之後手动连续点按钮验证是否可以连续收发,至此 动作也都很正常,SocketChannel反应时间也大约在150~170ms。 以下为SocketChannel实做的部分程式码: socketChannel = SocketChannel.open(); socketChannel.configureBlocking(true); socketChannel.connect(new InetSocketAddress("192.168.1.20", TCP_SERVER_PORT)); ByteBuffer buf = ByteBuffer.allocate(1024); buf.put((byte)outPut_cmd); buf.flip(); if(outPut_cmd==49){ bytesRead = 0; socketChannel.write(buf); inPut_buf.limit(20480); while(bytesRead<20480){ bytesRead = bytesRead + socketChannel.read(inPut_buf); } /* record tcp receive spend time */ ProcessTime = System.currentTimeMillis() - StartTime; Log.i("TcpClient", "Process time = " + ProcessTime + "ms"); // inPut_buf.flip(); // location = BytesIndexOf(inPut_buf.array(), jpegStart, 0); // Log.i("TcpClient", "jpegStart location = " + location.intValue()); // Log.i("TcpClient", "start location = " + location.intValue()); inPut_buf.flip(); location = BytesIndexOf(inPut_buf.array(), jpegEnd, 0); fileSize = location+2; inPut_buf.flip(); fileName = "hm5065_"+String.format("%04d", fileCounter)+".jpg"; /* record jpeg size and use ram buffer index number */ countBundle = new Bundle(); countBundle.putString("file_name", fileName); countBundle.putInt("jpeg_size", fileSize); countBundle.putString("save_type", save_file_hanlder); /* store bundle to message */ message = new Message(); message.setData(countBundle); handler.sendMessage(message); /* clear inPut_buffer */ inPut_buf.clear(); inPut_buf.flip(); fileSize = 0; fileCounter++; 3. 实做Service,在背景执行客户端撷取图片的服务,起动service以後 只有第一次的收送时间是150ms,第二次之後的收发时间平均都在三 秒左右,尔後都没有再回到150ms的水准。 在这里想请教前辈们几个问题: a. Android的网路客户端在使用sevice实做时,连续发送client request 造成reqponse反应时间变长是什麽原因造成的?但使用按钮发送客户端的 请求没有反应时间过长的情况,按钮间隔大约都到一秒。 b. 小弟在Service thread中也加入了thead.sleep去间隔,确认不是client request太过频繁所造成,当sleep时间加到500ms左右,反应时间减少 到约2秒左右。 最後小弟附上原始码连结,恳请版上各位前辈不吝赐教,谢谢。 原始码下载点:http://ppt.cc/SPhy --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.65.58.1 ghostfishM:转录至看板 AndroidDev 12/16 15:36







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP