übertragen wurde So habe ich this Android Probe als Leitfaden verwendet, um eine Bluetooth - Verbindung ohne irgendeine Art von Validierung (Diese App wird eine sehr Benutzerbasis einschränken und wird nicht zum Download zur Verfügung stehen Geschäft).Zusammenführen von Byte [], das über Bluetooth
Ich konnte String sehr gut übertragen, und es funktioniert wie ein Charme. Mein Problem ist beim Übertragen von Bildern.
Ich habe eine Aktivität, die das Byte [] des Bildes an den Bluetooth-Dienst sendet und einen Handler für die andere Aktivität, die die Nachricht erhält und Wharever mit der besagten Nachricht ausführt.
Die Sache ist, wegen der Größe des Puffers empfängt der Handler Teile des ursprünglichen Bytes []. Was ich versuche, ist, alle Teile in einem Byte zusammenzuführen und zu speichern.
Dies ist die Schleife, die ich in meinem Handler tun:
byte[] result = new byte[originalByteSize];
byte[] readBuf = (byte[]) msg.obj;
if (cont < byteTimes){
if (result == null) {
result = appendData(readBuf,readBuf);
} else {
result = appendData(result,readBuf);
}
} else {
new SavePhotoTask(cont).execute(result);
}
Dies ist die appendData Funktion
protected byte[] appendData(byte[] firstObject,byte[] secondObject){
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
if (firstObject!=null && firstObject.length!=0)
outputStream.write(firstObject);
if (secondObject!=null && secondObject.length!=0)
outputStream.write(secondObject);
} catch (IOException e) {
e.printStackTrace();
}
return outputStream.toByteArray();
}
Und hier ist, wo ich die Datei schreiben:
public class SavePhotoTask extends AsyncTask<byte[], String, String> {
int counter = 0;
public SavePhotoTask(int cont){
this.counter = cont;
}
@Override
protected String doInBackground(byte[]... jpeg) {
File photo = new File(Environment.getExternalStorageDirectory(), counter + "_photo.jpg");
if (photo.exists()) {
photo.delete();
}
try {
FileOutputStream fos = new FileOutputStream(photo.getPath());
fos.write(jpeg[0]);
fos.close();
} catch (java.io.IOException e) {
Log.e("PictureDemo", "Exception in photoCallback", e);
}
return (null);
}
Was ich brauchte, ist nur ein Tipp in die richtige Richtung, danke.
Also, was ist das Problem in diesem Code? –
@ pratt das Bild, das nur einen schwarzen Bildschirm ausgibt – Carlos
Code sieht gut aus, muss den Code debuggen, denke ich –