Devo inviare byte[] data
da Activity1
a Activity2
, per scrivere data("FileOutputStream.write(data)")
in un file jpg. Il mio file .jpg finale potrebbe superare 1mb.Come inviare array di byte di grandi dimensioni tra attività in Android?
Activity1:
public void onPictureTaken(byte[] data, Camera camera) {
Log.w("ImageSizeMyApp", String.valueOf(data.length));
mCamera.startPreview();
Intent shareWindow = new Intent(Activity1.this, Activity2.class);
shareWindow.putExtra("photo",data);
startActivity(shareWindow);
closeCamera();
Log.w("CameraActivity:", "onPictureTaken");
}
In Activity2:
Bundle extras = getIntent().getExtras();
data = extras.getByteArray("photo");
Io uso Log.w("ImageSizeMyApp", String.valueOf(data.length));
per ottenere questo:
ImageSizeMyApp: 446.367 (questa dimensione invia al prossimo esercizio, e tutto è buono)
ImageSizeMyApp: 577.368 (questo formato si chiude la mia macchina fotografica, e non invia all'attività successiva)
Così 500kb è la dimensione limite per Intent. C'è qualche altro metodo stabile per inviare il mio byte[]
superiore a 500kb tra le attività?
Qualsiasi riferimento o consiglio è benvenuto. Grazie in anticipo!
Aggiornamento: Potrei fare un'altra classe per memorizzare quell'array di byte []? O è meglio usare una variabile statica?
dove si trova la, jpg memorizzate? puoi utilizzare il percorso e passare tra le attività – Raghunandan
consulta questo http://stackoverflow.com/questions/11519691/passing-image-from-one-activity-another-activity – sasikumar
@Raghunandan il .jpg viene creato e memorizzato sul dispositivo solo nella seconda attività. Voglio creare un file jpg e memorizzarlo localmente quando viene premuto un pulsante. –