Ho un'applicazione Android in cui sto cercando di inviare un'immagine a un server. L'ho fatto usando la codifica Base64 e ha funzionato abbastanza bene, ma ci voleva troppa memoria (e tempo) per codificare l'immagine prima di inviarla.Java/Android: lettura/scrittura di un array di byte su una presa
Sto provando a spogliare l'applicazione Android fino a dove semplicemente invia l'array di byte e non gira intorno con alcun tipo di schema di codifica in modo da risparmiare il maggior numero di cicli di memoria e CPU possibile.
Questo è quello che vorrei che il codice di Android per assomigliare:
public String sendPicture(byte[] picture, String address) {
try {
Socket clientSocket = new Socket(address, 8000);
OutputStream out = clientSocket.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out.write(picture);
return in.readLine();
}
catch(IOException ioe) {
Log.v("test", ioe.getMessage());
}
return " ";
}
Il server è scritto in Java. Come posso scrivere il codice del server in modo da poter recuperare correttamente lo stesso array di byte? Il mio obiettivo è quello di salvare quanti più cicli di CPU sull'Android possibile.
Finora, tutti i metodi che ho provato hanno portato a dati corrotti oa un'eccezione generata.
Qualsiasi aiuto sarà apprezzato.
Funziona ma la lettura del byte per byte dal flusso è totalmente inefficiente e lenta. È meglio leggere almeno 1024 byte alla volta. – Robert
Immagino che restituire null invece di nuovo byte [] {} sarebbe un'idea migliore. – Zaki