Somebody knows why the method does not return a bitmap? Instead of bitmap, null is returned from the exception. This method is called in another class (which is in a new thread).
Method code:
class ClientIn {
Socket socket;
byte[] lenBuffer;
ReceiveBuffer buffer;
public ClientIn(Socket s) {
socket = s;
lenBuffer = new byte[4];
}
public Bitmap Receive() {
try {
InputStream stream = socket.getInputStream();
stream.read(lenBuffer,0,lenBuffer.length);
buffer = new ReceiveBuffer(BitConverter.ToInt32(lenBuffer,0)) ;
while(buffer.toReceive > 0) {
stream.read(buffer.Buffer, 0, buffer.Buffer.length);
if (buffer.Buffer.length <= 0) {
continue;
}
else {
if (buffer.toReceive < 1024) {
buffer.bufStream.write(buffer.Buffer, 0, buffer.toReceive);
buffer.toReceive -= buffer.toReceive;
Arrays.fill(buffer.Buffer, 0, buffer.Buffer.length, (byte) 0);
}
else {
buffer.bufStream.write(buffer.Buffer, 0, buffer.Buffer.length);
buffer.toReceive -= buffer.Buffer.length;
if (buffer.toReceive > 0) {
Arrays.fill(buffer.Buffer, 0, buffer.Buffer.length, (byte) 0);
}
}
}
}
byte[] test123 = buffer.bufStream.toByteArray();
Bitmap thtImg2 = BitmapFactory.decodeByteArray(test123, 0, test123.length);
return thtImg2; // <--- INSTEAD OF BITMAP, METHOD RETURN NULL
}
catch (IOException e) {
e.printStackTrace();
return null;
}
} }
The image data received via the socket as a byte array. Then create a bitmap object by BitmapFactory.decodeByteArray (test123, 0, test123.length);
Or bitmap receives bad data or bad has been decoded. Here is the result: