android sending bmp using sockets - android

I'm trying to send bmp image using socket. I have such code on android:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
MainActivity.bmp.compress(Bitmap.CompressFormat.JPEG, 20,
stream);
byte[] byteArray = stream.toByteArray();
OutputStream os = echoSocket.getOutputStream();
os.write(byteArray,0,byteArray.length);
os.flush();
and on PC:
InputStream in_ = clientSocket.getInputStream();
OutputStream out_ = new FileOutputStream("filename.bmp");
final byte[] buffer = new byte[1024];
int read = -1;
int i = 0;
while ((read = in_.read(buffer)) != -1) {
out_.write(buffer, 0, read);
System.out.println(i);
i++;
}
in_.close();
out_.close();
System.out.println("Done");
It never gets to last line( println("Done") ). It only does when I close android program, it gets to last line and bmp opens succesfully. problem is in_.read waits after android has finished transmitting, and i can't make it work.

You never close the socket/OutputStream on the device side so the PC side doesn't know that there is no more data and so it just spins in the while loop reading 0 bytes at a time.
Also, if you're going to use my solution, please mark me as the accepted answer in your previous thread.

Related

I want to convert a bitmap image to byte array format in android. is it possible?

I want to convert and Image to Byte. The exact format that i want is shared below.
public static byte[] ImageByte = new byte[] { (byte)0x1b,(byte)0x42,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x33
,(byte)0x07,(byte)0x01,(byte)0x00,(byte)0x34,(byte)0x47,(byte)0x00,(byte)0x32,(byte)0x01,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x00,(byte)0x34,(byte)0x47,(byte)0x00,(byte)0x32,(byte)0x07,(byte)0x01,(byte)0xf0,(byte)0x01
,(byte)0x30,(byte)0x01,(byte)0x10,(byte)0x01,(byte)0x00,(byte)0x32,(byte)0x47,(byte)0x00,(byte)0x32,(byte)0x3f,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x1e,(byte)0x01,(byte)0x00,(byte)0x32,(byte)0x47
,(byte)0x00,(byte)0x32,(byte)0x7e,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x1c,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x32,(byte)0xf8,(byte)0x01,(byte)0x00
,(byte)0x01,(byte)0x1e,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x03,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x06,(byte)0x01,(byte)0x7e,(byte)0x01
,(byte)0x03,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x07,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xf0
,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x0f,(byte)0x01,(byte)0xe7,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x31
,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x1f,(byte)0x01,(byte)0xcf,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31
,(byte)0x3f,(byte)0x01,(byte)0xff,(byte)0x02,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x3f,(byte)0x01,(byte)0xff,(byte)0x02,(byte)0xf0
,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x7f,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x7f,(byte)0x01,(byte)0xff,(byte)0x02,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xff,(byte)0x01
,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0xff,(byte)0x03,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47
,(byte)0x00,(byte)0x30,(byte)0x01,(byte)0x01,(byte)0xff,(byte)0x02,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x02,(byte)0xff,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x01
,(byte)0x01,(byte)0xff,(byte)0x02,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x02,(byte)0xff,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x03,(byte)0x01,(byte)0xff,(byte)0x02
,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x03,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc
,(byte)0x01,(byte)0x00,(byte)0x02,(byte)0x03,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x07,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf0,(byte)0x01
,(byte)0x00,(byte)0x02,(byte)0x03,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x07,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00
,(byte)0x02,(byte)0x07,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x07,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x02
,(byte)0x0f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x1f,(byte)0x01,(byte)0xff
,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0f,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x3f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf8,(byte)0x01
,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0f,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x3e,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47
,(byte)0x00,(byte)0x30,(byte)0x0f,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0xf8,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0f
,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x02,(byte)0x03,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0f,(byte)0x01
,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x02,(byte)0x0f,(byte)0x01,(byte)0xc1,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x1f,(byte)0x01,(byte)0xc0
,(byte)0x01,(byte)0x00,(byte)0x02,(byte)0x3f,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x1f,(byte)0x01,(byte)0xc0,(byte)0x01
,(byte)0x00,(byte)0x01,(byte)0x02,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x1f,(byte)0x01,(byte)0x80
,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x1f,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0f,(byte)0x01
,(byte)0x00,(byte)0x02,(byte)0x3f,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x1f,(byte)0x01,(byte)0x00
,(byte)0x02,(byte)0xfe,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x1f,(byte)0x01,(byte)0xf7,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0f,(byte)0x01,(byte)0x00,(byte)0x01
,(byte)0x0f,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x7f,(byte)0x01,(byte)0xf3,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0e,(byte)0x01,(byte)0x00
,(byte)0x01,(byte)0x1f,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xe3,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0e,(byte)0x01
,(byte)0x00,(byte)0x01,(byte)0x3c,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xc3,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30,(byte)0x0c
,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0x83,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x30
,(byte)0x0c,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x1f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0x83,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00
,(byte)0x30,(byte)0x0c,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0x00,(byte)0x02,(byte)0x3f,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31
,(byte)0x0e,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x1c
,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x1f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x1c,(byte)0x01
,(byte)0x00,(byte)0x01,(byte)0x3f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xe6,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x18,(byte)0x01,(byte)0x01
,(byte)0x01,(byte)0xff,(byte)0x02,(byte)0x8e,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x18,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0xff,(byte)0x01
,(byte)0xfc,(byte)0x01,(byte)0x0e,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x30,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xe0
,(byte)0x01,(byte)0x1e,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x30,(byte)0x01,(byte)0x3f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0x00,(byte)0x01
,(byte)0x3c,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x30,(byte)0x01,(byte)0x7f,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x7c
,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x30,(byte)0x01,(byte)0x7f,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xf8,(byte)0x01
,(byte)0x0f,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x30,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x30,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x1f
,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x38,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x1e,(byte)0x01,(byte)0x00,(byte)0x31
,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x38,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x3c,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31
,(byte)0x1c,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x78,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x0e,(byte)0x01,(byte)0xe0
,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x07,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x0f,(byte)0x01
,(byte)0xff,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x03,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0x03
,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x31,(byte)0x47,(byte)0x00,(byte)0x31,(byte)0x01,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0x00,(byte)0x32
,(byte)0x47,(byte)0x00,(byte)0x32,(byte)0x7c,(byte)0x01,(byte)0x00,(byte)0x35,(byte)0x47,(byte)0x00,(byte)0x32,(byte)0x1c,(byte)0x01,(byte)0x00,(byte)0x35,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68
,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x33,(byte)0xff,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00,(byte)0x33,(byte)0x47,(byte)0x00,(byte)0x33,(byte)0x7f,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x00
,(byte)0x33,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x38,(byte)0x0e,(byte)0x01,(byte)0x00,(byte)0x2f,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x0f,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x0a
,(byte)0x7f,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x2e,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x06,(byte)0x01,(byte)0xe1,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0x84,(byte)0x01,(byte)0x06
,(byte)0x01,(byte)0x81,(byte)0x01,(byte)0x84,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x1c,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0xf0
,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x06,(byte)0x01,(byte)0x63,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x1f,(byte)0x01,(byte)0xe7,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0xf1,(byte)0x01
,(byte)0xe7,(byte)0x01,(byte)0xf3,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x7e,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0xc1,(byte)0x02,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00
,(byte)0x2c,(byte)0x06,(byte)0x01,(byte)0x61,(byte)0x01,(byte)0xdc,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x74,(byte)0x01,(byte)0x66,(byte)0x01,(byte)0x60,(byte)0x01,(byte)0xe3,(byte)0x01,(byte)0x11,(byte)0x01,(byte)0x9c
,(byte)0x01,(byte)0x66,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xc1,(byte)0x01,(byte)0x98,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x06,(byte)0x01
,(byte)0x61,(byte)0x01,(byte)0xcc,(byte)0x01,(byte)0x70,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x60,(byte)0x02,(byte)0xe3,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0x8c,(byte)0x01,(byte)0x60,(byte)0x01,(byte)0x03,(byte)0x01
,(byte)0x80,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xc1,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x07,(byte)0x01,(byte)0xe1,(byte)0x01,(byte)0xcc,(byte)0x01,(byte)0x60
,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x60,(byte)0x02,(byte)0xe3,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0x8c,(byte)0x01,(byte)0x70,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0xe1
,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x07,(byte)0x01,(byte)0xf1,(byte)0x01,(byte)0xcc,(byte)0x01,(byte)0x60,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x60,(byte)0x01
,(byte)0x7f,(byte)0x01,(byte)0xe3,(byte)0x01,(byte)0xf1,(byte)0x01,(byte)0x8c,(byte)0x01,(byte)0x7c,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0x83,(byte)0x01,(byte)0xe3,(byte)0x01,(byte)0x61,(byte)0x01,(byte)0xf0,(byte)0x01
,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x06,(byte)0x01,(byte)0x39,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x60,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x60,(byte)0x02,(byte)0xe3,(byte)0x01,(byte)0xf1
,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x3e,(byte)0x01,(byte)0x03,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0xc7,(byte)0x01,(byte)0x70,(byte)0x01,(byte)0xf8,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c
,(byte)0x06,(byte)0x01,(byte)0x39,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x60,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x60,(byte)0x02,(byte)0xe3,(byte)0x01,(byte)0x11,(byte)0x01,(byte)0xfc,(byte)0x01,(byte)0x0e,(byte)0x01
,(byte)0x01,(byte)0x01,(byte)0x80,(byte)0x01,(byte)0xc7,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x06,(byte)0x01,(byte)0x39,(byte)0x01,(byte)0xdc
,(byte)0x01,(byte)0x70,(byte)0x01,(byte)0x38,(byte)0x01,(byte)0x60,(byte)0x02,(byte)0xe3,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0x9c,(byte)0x01,(byte)0x06,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0xc6
,(byte)0x01,(byte)0x30,(byte)0x01,(byte)0x18,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x06,(byte)0x01,(byte)0x39,(byte)0x01,(byte)0xce,(byte)0x01,(byte)0x78,(byte)0x01,(byte)0x70,(byte)0x01
,(byte)0x60,(byte)0x02,(byte)0xe3,(byte)0x01,(byte)0x19,(byte)0x01,(byte)0x8e,(byte)0x01,(byte)0xc6,(byte)0x01,(byte)0x01,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0xce,(byte)0x01,(byte)0x39,(byte)0x01,(byte)0x18,(byte)0x01
,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x0f,(byte)0x01,(byte)0x71,(byte)0x01,(byte)0xc7,(byte)0x01,(byte)0x3c,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x60,(byte)0x02,(byte)0xe3,(byte)0x01,(byte)0xf9
,(byte)0x01,(byte)0x87,(byte)0x01,(byte)0xee,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0xf9,(byte)0x01,(byte)0xcc,(byte)0x01,(byte)0x1d,(byte)0x01,(byte)0xb8,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c
,(byte)0x0f,(byte)0x01,(byte)0xe1,(byte)0x01,(byte)0xc3,(byte)0x01,(byte)0xdf,(byte)0x01,(byte)0xc0,(byte)0x01,(byte)0xf0,(byte)0x02,(byte)0xe7,(byte)0x01,(byte)0xf1,(byte)0x01,(byte)0xc3,(byte)0x01,(byte)0xfc,(byte)0x01
,(byte)0x00,(byte)0x01,(byte)0x3f,(byte)0x01,(byte)0xdc,(byte)0x01,(byte)0x1d,(byte)0x01,(byte)0xf0,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00
,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x06,(byte)0x01,(byte)0xc4,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x4e,(byte)0x01,(byte)0x76,(byte)0x01,(byte)0x60,(byte)0x01,(byte)0xf9
,(byte)0x01,(byte)0x1c,(byte)0x01,(byte)0xc4,(byte)0x01,(byte)0x9c,(byte)0x01,(byte)0xcf,(byte)0x01,(byte)0x0f,(byte)0x01,(byte)0x64,(byte)0x01,(byte)0xe6,(byte)0x01,(byte)0x1c,(byte)0x01,(byte)0x90,(byte)0x01,(byte)0x00
,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x07,(byte)0x01,(byte)0x46,(byte)0x01,(byte)0xff,(byte)0x01,(byte)0x4e,(byte)0x01,(byte)0x7a,(byte)0x01,(byte)0xe1,(byte)0x01,(byte)0xcb,(byte)0x01,(byte)0x1c,(byte)0x01
,(byte)0xc6,(byte)0x01,(byte)0x9d,(byte)0x01,(byte)0xef,(byte)0x01,(byte)0x04,(byte)0x01,(byte)0x66,(byte)0x01,(byte)0xef,(byte)0x01,(byte)0x3f,(byte)0x01,(byte)0xb0,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00
,(byte)0x2c,(byte)0x07,(byte)0x01,(byte)0xce,(byte)0x01,(byte)0x62,(byte)0x01,(byte)0x4a,(byte)0x01,(byte)0x70,(byte)0x01,(byte)0xc1,(byte)0x01,(byte)0x83,(byte)0x01,(byte)0x1c,(byte)0x01,(byte)0xe7,(byte)0x01,(byte)0x9d
,(byte)0x01,(byte)0xc6,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0x7e,(byte)0x01,(byte)0xe7,(byte)0x01,(byte)0x70,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x05,(byte)0x01
,(byte)0xcf,(byte)0x01,(byte)0x62,(byte)0x01,(byte)0x4e,(byte)0x01,(byte)0x70,(byte)0x01,(byte)0xe1,(byte)0x01,(byte)0x83,(byte)0x01,(byte)0x1d,(byte)0x01,(byte)0xe7,(byte)0x01,(byte)0x9c,(byte)0x01,(byte)0xe6,(byte)0x01
,(byte)0x05,(byte)0x01,(byte)0x7c,(byte)0x01,(byte)0xe7,(byte)0x01,(byte)0x66,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x05,(byte)0x01,(byte)0xcf,(byte)0x01,(byte)0x63
,(byte)0x01,(byte)0xcf,(byte)0x01,(byte)0x70,(byte)0x01,(byte)0xe1,(byte)0x01,(byte)0xfb,(byte)0x01,(byte)0xdd,(byte)0x01,(byte)0xf5,(byte)0x01,(byte)0x9d,(byte)0x01,(byte)0xe6,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0x6e
,(byte)0x01,(byte)0xe7,(byte)0x01,(byte)0xfe,(byte)0x01,(byte)0x60,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x2c,(byte)0x0e,(byte)0x01,(byte)0xdb,(byte)0x01,(byte)0x63,(byte)0x01,(byte)0xcb,(byte)0x01
,(byte)0xf8,(byte)0x01,(byte)0xe0,(byte)0x01,(byte)0x7b,(byte)0x01,(byte)0xdd,(byte)0x01,(byte)0x3c,(byte)0x01,(byte)0x9d,(byte)0x01,(byte)0xe6,(byte)0x01,(byte)0x07,(byte)0x01,(byte)0x64,(byte)0x01,(byte)0xed,(byte)0x01
,(byte)0xbe,(byte)0x01,(byte)0x60,(byte)0x01,(byte)0x00,(byte)0x2c,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00
,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x47,(byte)0x00,(byte)0x68,(byte)0x1b,(byte)0x45};
If you are taking from the image Via the Gallery intent. Open an input stream and then loop through it till you reach the End of the stream. In the loop read each byte and place in the array.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] b = new byte[0];
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
InputStream inputStream = getActivity().getApplicationContext().getContentResolver().openInputStream(data.getData());
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
b = baos.toByteArray();
baos.close();
Please see how to ask on stack overflow. Now come to your question, try this code to get a byte array from bitmap,
Bitmap bitmap = intent.getExtras().get("data");
ByteArrayOutputStream bos= new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
byte[] byteArray = bos.toByteArray();

Not able to transfer image everytime through socket Android

I need to develop an application to transfer image continuously from android to android which should be received as an video on the client side..and i have two applications which one (server) will send the file through socket connected by wifi and other should the client side should recive the image which is sent...currently am just saving it in one location in the client side...am able to receive the file correctly...but the problem is am not able to send all files correctly all the time...
Means some time the image file will be transfered and some time i ll not be able to receive and when i ll not be able to receive i am getting an exception as
: java.io.UTFDataFormatException: ...and the file is not written and saved on the receiving side...
If am not able to receive images continuously...i can think there is some problem in the code..but am able to transfer it some times..and some time not able to transfer...am not able to figure what the issue is...plz any guidance
the error is:
11-18 10:38:17.351: W/System.err(1001): java.io.UTFDataFormatException: bad second or third byte at 2
11-18 10:38:17.359: W/System.err(1001): at java.nio.charset.ModifiedUtf8.decode(ModifiedUtf8.java:53)
11-18 10:38:17.359: W/System.err(1001): at java.io.DataInputStream.decodeUTF(DataInputStream.java:444)
11-18 10:38:17.359: W/System.err(1001): at java.io.DataInputStream.decodeUTF(DataInputStream.java:438)
11-18 10:38:17.359: W/System.err(1001): at java.io.DataInputStream.readUTF(DataInputStream.java:433)
and the file is not saved when i get this exception..
Many scenarios i have tested by capturing image and saving and sending...and also compressing the image and sending...in these scenarios some very rarely it is going....am not able to figure out it...
Sender code:
File myFile = new File(sdCard+"/image/image.jpg");
byte[] mybytearray = new byte[(int) myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
//bis.read(mybytearray, 0, mybytearray.length);
DataInputStream dis = new DataInputStream(bis);
dis.readFully(mybytearray, 0, mybytearray.length);
OutputStream os = socket.getOutputStream();
tv.setText("Send file name size to server");
//Sending file name,file size and to the server
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF(myFile.getName());
dos.writeLong(mybytearray.length);
dos.write(mybytearray, 0, mybytearray.length);
dos.flush();
socket.close();
tv.setText("Socket Close");
tv.setText("Sent");
Receiver Code:
File dir = new File (sdCard.getAbsolutePath() + "/dir1/dir2");
dir.mkdirs();
String fileName = clientData.readUTF();
File file = new File(dir,fileName);
OutputStream output = new FileOutputStream(file);
long size = clientData.readLong();
byte[] buffer = new byte[1024];
while (size > 0 && (bytesRead = clientData.read(buffer, 0, (int)Math.min(buffer.length, size))) != -1)
{
output.write(buffer, 0, bytesRead);
size -= bytesRead;
System.out.println("Writing");
}
// status.setText("Received");
// Closing the FileOutputStream handle
output.close();
s.close();
Thanks and Regards,
Divya.K
I was stuck on this thing i combined few days of my search and reached to this... Try it and see if works for you..
Bitmap myBitmap = null;
try {
File imgFile = new File(imgPath);
if (imgFile.exists()) {
File image = new File(imgPath, "imagename.jpg");
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
myBitmap = BitmapFactory.decodeFile(image.getAbsolutePath(),bmOptions);
//myBitmap = Bitmap.createScaledBitmap(bitmap,parent.getWidth(),parent.getHeight(),true); //uncomment this if you want to scale the image
//imageView.setImageBitmap(bitmap);//to set bitmap to image view
}
Socket sock = new Socket("192.168.1.1", 80);//ip adress and port number
ByteArrayOutputStream bos = new ByteArrayOutputStream();
if (myBitmap != null) {
myBitmap.compress(Bitmap.CompressFormat.PNG, 0 /*ignored for PNG*/, bos);
}
byte[] bitmapdata = bos.toByteArray();
ByteArrayInputStream bs = new ByteArrayInputStream(bitmapdata);
BufferedInputStream bis = new BufferedInputStream(bs);
bis.read(bitmapdata, 0, bitmapdata.length);
OutputStream os = sock.getOutputStream();
System.out.println("Sending...");
os.write(bitmapdata, 0, bitmapdata.length);
os.flush();
sock.close();
} catch (Exception e) {
e.printStackTrace();
}

sending bmp usng sockets

I'm trying to send bmp image using socket. I have such code on android:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
MainActivity.bmp.compress(Bitmap.CompressFormat.JPEG, 20,
stream);
byte[] byteArray = stream.toByteArray();
OutputStream os = echoSocket.getOutputStream();
os.write(byteArray,0,byteArray.length);
os.flush();
and on PC:
String q = SockIn.readLine();
File file = new File("filename.bmp");
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(q);
in bmp file I only get up to 401 bytes, which of course is corrupt bmp image. what am I doing wrong?
MODIFIED
modified PC side, now the code is:
InputStream in_ = clientSocket.getInputStream();
OutputStream out_ = new FileOutputStream("filename.bmp");
final byte[] buffer = new byte[1024];
int read = -1;
int i = 0;
while ((read = in_.read(buffer)) != -1) {
out_.write(buffer, 0, read);
System.out.println(i);
i++;
}
in_.close();
out_.close();
System.out.println("Done");
It never gets to last line( println("Done") ). when I close android program, it gets to last line and bmp opens succesfully
Your reading logic is completely off. You only use a readLine() once and then write that to file. The data that was written to the socket on the device side was binary. That means that trying to read it as if it were textual (as readLine() does) will return meaningless junk. The reason it's usually 401 bytes long is that readLine() will look for the first newline character combination and return everything up to that as a String. This is not what you want.
What you need is a loop that will read from the socket and write into the file as long as there is data in the socket. A standard copy loop should suffice here.
InputStream in = socket.getInputStream();
OutputStream out = new FileOutputStream(...);
final byte[] buffer = new byte[BUFFER_SIZE];
int read = -1;
while ((read = in.read(buffer)) != -1)
out.write(buffer, 0, read);
in.close();
out.close();
Note that the above code isn't tested but something to that effect should do the trick.
Why are you reading a String if you are sending a byte ?
Try those setp one by one only if the previous did not worked.
1. Read() and don't Readline() what you are writing
If you write a byte, read a byte
Byte obj = SockIn.read();
2. Encode your array before sending
Base64.encodeBase64String(byteArray);

How to display the JPEG Image directly from byte array (Before saving Image)?

I am receiving a jpeg image (Image size: 50KB) from client socket and saving in emulator SD Card. From there I am displaying the jpg image in Imageview. But I want to display the image before saving image on the SD Card because our android appli will receive the continous images from sockets, If I follow receive, save and display method then it will become very slow process, so to increase the speed I want display from ram only. For this I need to save the image array temporarily on the RAM. From there I planed to display and save by using the separate threads. So please guide me how to display the image from byte array.
Note: I am receiving JPEG image from socket, not .bmp or .gif or .png.
Below is my code for receiving the image from tcp socket. (Its working fine)
(Note: This is done in seperate thread, don't try it in UI thread.)
public byte[] mybytearray = new byte[310000];
private int bytesRead=0;
private int current = 0;
ServerSocket serverSocket = new ServerSocket(SERVERPORT);
Socket client = serverSocket.accept();
try {
myDir=new File("/mnt/sdcard/saved_images");
if (!myDir.exists()){
myDir.mkdir();
}else{
Log.d("ServerActivity","Folder Already created" );
}
String fpath = "/image0001.jpg";
File file = new File (myDir, fpath);
if (file.exists ()) file.delete ();
InputStream is = client.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
current = bytesRead;
do {
bytesRead = is.read(mybytearray, current, (mybytearray.length-current));
if(bytesRead >= 0) current += bytesRead;
} while(bytesRead > -1);
bos.write(mybytearray, 0 , current);
Log.d("ServerActivity","Reconstructing Image from array");
bos.flush();
bos.close();
fos.flush();
fos.close();
is.close();
client.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
Try inserting this code snippet into your code:
do {
bytesRead = is.read(mybytearray, current, (mybytearray.length-current));
if(bytesRead >= 0) current += bytesRead;
} while(bytesRead > -1);
ByteArrayInputStream inputStream = new ByteArrayInputStream(myByteArray);
bitmap = BitmapFactory.decodeStream(inputStream);
ImageView picture = new ImageView(this);
picture.setImageBitmap(bitmap);
bos.write(mybytearray, 0 , current);
Use Bitmap, create it from Byte Array,
Bitmap bitmap;
bitmap= BitmapFactory.decodeByteArray(mybytearray, 0, mybytearray.length);
Convert byte[] to bitmap.
Try the following
ByteArrayInputStream imageStream = new ByteArrayInputStream(byte[] array);
Bitmap bitmap = BitmapFactory.decodeStream(imageStream);

Android: Extra bytes in file transferred to device

So, I have a simple Android app that connects to a Java Server application using Sockets.
Specifically, I want to be able to send a file from the Server application to the Android app and then store that file in internal memory on the device.
The basis of the server code for transferring the file is:
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(System.getProperty("user.home"), "text.txt")));
BufferedOutputStream bos = new BufferedOutputStream(clientSocket.getOutputStream());
byte buffer[] = new byte[1024];
int read;
while ((read = bis.read(buffer)) != -1) {
bos.write(buffer, 0, read);
}
bos.flush();
bos.close();
and the Client code to receive the file is as follows:
BufferedInputStream bis = new BufferedInputStream(clientSocket.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(openFileOutput("text.txt", Context.MODE_PRIVATE));
byte buffer[] = new byte[1024];
int read;
while ((read = bis.read(buffer)) != -1) {
bos.write(buffer, 0, read);
}
bos.flush();
bos.close();
The code appears to work fine when the client code is in a standard Java application, that is, the file sends successfully from server to client.
The problem arises when I use this code in an Android app. (Note: I use a standard FileOutputStream in the standard Java app instead of the
openFileOutput("text.txt", Context.MODE_PRIVATE))
line above).
For example purposes, the file I am transferring is a simple UTF-8 text file, which contains a single string
This is a text file.
However, when I pull this file I have copied to the emulator, from the "/data/data//files" folder on the emulator, there are an extra couple of bytes at the top of the file so the content is now
¨ÌThis is a text file.
I have no idea why this is happening and it has me stumped. I think the problem might be related to the line:
BufferedOutputStream bos = new BufferedOutputStream(openFileOutput("text.txt", Context.MODE_PRIVATE));
but I can't quite figure it out.
Any suggestions as to what I am doing wrong would be most helpful.
Thank you in advance

Categories

Resources