2012-04-03 5 views
1

In meiner Anwendung muss ich ein Bild der Kamera speichern, wenn der Benutzer die Kameraansicht drückt. So weit, so gut, ich folgte dem offiziellen Tutorial: http://developer.android.com/guide/topics/media/camera.html und alles funktioniert gut, außer wenn ich versuche, das Bild im Rückruf zu speichern. Tatsächlich bekomme ich keinen Fehler im try/catch-Block, aber meine Datei ist nirgendwo zu finden.Kamerabild in einer Datei speichern, Datei nicht erstellt

habe ich die richtigen Berechtigungen in der mannifest hinzufügen:

<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

In meinem Rückruf Ich habe:

private PictureCallback mPicture = new PictureCallback() 
    { 
     public void onPictureTaken(byte[] data, Camera camera) 
     { 
      Log.d("tag", "Je rentre bien dans la callback"); 

      //File pictureFile = media.getOutputMediaFile(MediaFile.MEDIA_TYPE_IMAGE); 
      File pictureFile = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), "temp.png"); 


      if (pictureFile == null) 
      { 
       Log.d("tag", "Error creating media file, check storage permissions "); 
       return; 
       } 

      try 
      { 
       FileOutputStream fos = new FileOutputStream(pictureFile); 
       Log.d("tag", "Fichier créer : " + pictureFile.getAbsolutePath()); 
       fos.write(data); 
       fos.close(); 
      } 
      catch (FileNotFoundException e) 
      { 
       Log.d("tag", "File not found " + pictureFile.getAbsolutePath() 
         + " Readable : " + pictureFile.canRead() 
         + " Writeable : " + pictureFile.canWrite() 
         + " Exist : " + pictureFile.exists()); 
      } 
      catch (IOException e) 
      { 
       Log.d("tag", "Error accessing file"); 
      } 
     } 

Meine Log-Datei dies mein zeigen:

04-03 10:29:28.950: D/tag(15087): Je rentre bien dans la callback 
    04-03 10:29:28.960: D/tag(15087): Fichier créer : /mnt/sdcard/Pictures/temp.png 

ich überprüfen die sdcard im tablet, aber wie gesagt die datei ist nirgends zu finden. Ich recherchiere mein Problem, aber ich habe noch nichts brauchbares gefunden. Ich sehe nicht, was mit meinem Code falsch ist oder was fehlt.

Ich hoffe, dass jemand hier mir helfen kann.

Antwort

0

Versuchen Sie dieses Ding.

File path = new File(Environment.getExternalStorageDirectory()+ getResources().getString(R.string.QRCode_Path)); 
    path.mkdirs(); 

Hauptsache path.mkdirs(); es wird einen Ordner erstellen, auch wenn nicht erstellt und gespeichert werden Datei.

+0

ich es versucht, es keine Änderung, was die Datei noch nirgendwo speichern. Es hat das Verzeichnis nicht einmal erstellt. Ich bin in einem Fragment, wenn ich die Rettung mache, ich weiß nicht, ob es etwas ändert. Ich bearbeite mein Log es heißt: 04-03 15: 48: 29.000: D/tag (18524): Fichier créer /mnt/sdcard/Pictures/temp.png Readable: true Schreibbar: true Existiere: true – JT117

2

Sie können wie versuchen diese

System.gc(); 
String fileName = System.currentTimeMillis()+".jpg"; //you can give any name to your image file 
String mPathImage = Environment.getExternalStorageDirectory()+ "/" + fileName; 
File file = new File(mPathImage); 
Uri outputFileUri = Uri.fromFile(file); 
Intent mIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
mIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
startActivityForResult(mIntent, 1);