I'm trying to make remote Desktop Application. but data transfer speed is slow anyone know how to speed up transfer speed my client app running on android
public class SendLiveScreenThread extends Thread {
public void run() {
try {
while (true) {
Socket socket = new Socket(connect.ConnectionDetails.clientip, connect.ConnectionDetails.RemoteDesktopFeedSendPort);
BufferedImage screenshot = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(resize(screenshot, 400, 200), "png", os);
InputStream fis = new ByteArrayInputStream(os.toByteArray());
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(buffer);
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
run();
}
}
public BufferedImage resize(BufferedImage img, int newW, int newH) {
Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = dimg.createGraphics();
g2d.drawImage(tmp, 0, 0, null);
g2d.dispose();
return dimg;
}
}
ImageIO.write(resize(screenshot, 400, 200), "png", os);. You could better directly write to the outputstream:ImageIO.write(resize(screenshot, 400, 200), "png", socket.getOutputStream());And why not a jpg? Much less bytes to transfer.