2017-10-03 4 views
0

Ich möchte ein Bild von der Kamera aufnehmen, in Datei speichern und auf den Server hochladen. Ich benutze Folgecode:Wie kann ich warten, bis die Daten in die Datei geschrieben werden?

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, 
          Uri.fromFile(mCurrentPhotoFile)); 
startActivityForResult(takePictureIntent, RESULT_IMAGE_CAPTURE); 

und

if (requestCode == RESULT_IMAGE_CAPTURE && resultCode == RESULT_OK && mCurrentPhotoFile != null) { 
    uploadFile(mCurrentPhotoFile); 
} 

Aber manchmal Datei hat 0 Byte Größe. Ich denke es ist, weil das Bild nicht sofort speichert und ich muss auf das Speichern warten.

Wie kann ich es beheben?

Antwort

0

Sie müssen warten, bis das Bild in der Galerie gespeichert ist. Nachdem Sie das Bild auf den Server hochladen können.

So unterhalb der Klasse ist für das Erhalten des Bildes nach dem Speichern in der Galerie.

public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient { 

    private MediaScannerConnection mMs; 
    private File mFile; 

    public SingleMediaScanner(Context context, File f) { 
     mFile = f; 
     mMs = new MediaScannerConnection(context, this); 
     mMs.connect(); 
    } 

    @Override 
    public void onMediaScannerConnected() { 
     mMs.scanFile(mFile.getAbsolutePath(), null); 
    } 

    @Override 
    public void onScanCompleted(String path, Uri uri) { 
     mMs.disconnect(); 

     System.out.println("path......"+path); 
     System.out.println("uri......"+uri); 

     // here you can upload image to server 
     uploadFile(mCurrentPhotoFile); 
    } 
} 

oben Klasse auszuführen nur Konstruktor aufrufen

new SingleMediaScanner(this, imageFile); 
+0

es nicht funktionieren :(habe ich versucht, Image-Datei zur Galerie nach der Erstellung hinzufügen, aber auch nicht funktionieren :( – actin

+0

@actin es funktioniert wenn Sie ein imgFile-Objekt erstellen. –

Verwandte Themen