2016-03-23 2 views
0

Below MediaStore.Extra_Output ist, wie ichIn welcher Situation, hat die Datei nichts, wenn die Verwendung Capture Bildes

Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE"); 
MyConst.file = new File(Util.Second_PATH,System.currentTimeMillis() + ".jpg");       getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(MyConst.file)); 
startActivityForResult(getImageByCamera); 

Mein Dateipfad wie unten ist ein Bild aufzunehmen:

Util.Second_PATH = Environment.getExternalStorageDirectory() 
      + File.separator 
      + "baletu" 
      + File.separator 
      + "images/"; 

ich kann nicht die Bilddatei auf einigen Geräten.

In welcher Situation könnte dies geschehen, so kann ich ein Update funktioniert?

Antwort

0

unten ist, wie ich Bild erfassen

Du EXTRA_OUTPUT nicht verwenden. Daher sollte Ihr Bild ein Thumbnail sein, von getData().getExtra("data") auf dem Intent zu onActivityResult() für Ihren startActivityForResult() Anruf geliefert erhalten.

Und mein Dateipfad ist wie unten:

nicht String-Verkettung Verwenden Sie Dateipfade zu erstellen. Verwenden Sie den richtigen File Konstruktor, die Fälle behandeln kann, wo Environment.getExternalStorageDirectory() entweder tut oder nicht einen nachlauf Verzeichnisseparator hat.

Beachten Sie auch, dass, wenn Sie beginnen EXTRA_OUTPUT verwenden, a file:Uri may not work on the next version of Android.

in welcher Situation könnte dies

Kamera-Apps Bugs passieren. Es gibt über 8.000 Android-Gerätemodelle. Es gibt Hunderte von integrierten Kamera-Apps, die diese Modelle abdecken, und es gibt andere Kamera-Apps zum Download. Einige haben fehlerhafte Implementierungen von ACTION_IMAGE_CAPTURE. Das Delegieren der Bilderfassung an eine Drittanbieter-App ist unzuverlässig. Entweder lebe mit dieser Tatsache (und schade, indem du dem Nutzer sagst, dass die Kamera-App seines Geräts fehlerhaft ist) oder benutze die Kamera-APIs direkt, um Fotos zu machen.

+0

Vielen Dank an Ihre advices.I ist mit tatsächlich EXTRA_OUTPUT, nur dieser Zeile eingeben vergessen. Und wenn du sagst "benutze den richtigen Dateikonstruktor", meinst du, dass ich den Speicherstatus überprüfen sollte, wie ich es in meiner Anwendung oncreate getan habe. Oder können Sie mir den richtigen Code über den richtigen Weg zeigen, um den Dateipfad anzugeben. Vielen Dank! –

Verwandte Themen