此代码通过tcp从c#服务器接收多个图像(视频)并正常工作。但它非常慢,并且缺少帧是他们的任何方式使其快速(消除延迟),如不关闭套接字,或相反使用数据输入流。
private Runnable connectSocket=new Runnable() {
@Override
public void run() {
{
try {
socket = new Socket(serverAddr, 4444);
DataInputStream dis;
try {
dis=new DataInputStream(socket.getInputStream());
int bytesRead;
byte[] pic = new byte[5000*1024];
bytesRead = dis.read(pic, 0, pic.length);
bitmapimage = BitmapFactory.decodeByteArray(pic, 0, bytesRead);
} catch(Exception e) {
Log.e("TCP", "S: Error", e);
} finally {
socket.close();
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
Log.e("TCP", "C: UnknownHostException", e);
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("TCP", "C: IOException", e);
e.printStackTrace();
}
imgview.setImageBitmap(bitmapimage);
imgview.invalidate();
}
mHandler.postDelayed(this, 0);
}
};
}
答案 0 :(得分:0)
按图像发送图像不是一个很好的方法。考虑使用压缩视频格式。
你也不能真正做到这一点。这完全取决于2G中的网络设备总是比wifi / 3G慢。