J'ai une application Serveur sur mon PC qui lit un fichier jpg et l'envoie via une socket à l'appareil Android. Le problème est que lorsque le périphérique Android reçoit un tableau d'octets, il ne peut pas être converti en bitmap. J'ai créé une application PC pour recevoir ce même tableau et les données reçues sont différentes de celles de l'androïde même si j'utilise le même code pour le recevoir.Tableau d'octets incohérents lus lors de l'envoi de PC vers PC et de PC vers Android
D'où mon hypothèse est que je dois en quelque sorte besoin de le lire différemment sur android.
PC serveur Java
ServerSocket serverSocket = new ServerSocket(PORT);
Socket clientSocket = serverSocket.accept();
BufferedImage image = ImageIO.read(new File("D:\\test1\\test.jpg"));
ByteArrayOutputStream byteArrayoutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", byteArrayoutputStream);
OutputStream outputStream = clientSocket.getOutputStream();
byte[] size = ByteBuffer.allocate(4).putInt(byteArrayoutputStream.size()).array();
outputStream.write(size);
outputStream.write(byteArrayoutputStream.toByteArray());
outputStream.flush();
Thread.sleep((long)5000);
clientSocket.close();
Récepteur Android
DataInputStream inputStream = new DataInputStream(serverSocket.getInputStream());
byte[] sizeAr = new byte[4];
inputStream.read(sizeAr);
int size = ByteBuffer.wrap(sizeAr).asIntBuffer().get();
byte[] imageAr = new byte[size];
inputStream.read(imageAr);
System.out.println(imageAr.toString());
bMap = BitmapFactory.decodeByteArray(imageAr, 0, imageAr.length);//this returns null
Malheureusement n'a pas aidé, toujours eu exactement le même tableau d'octets. –