2009-01-18 11 views
5

J'ai rencontré un petit problème avec quelque chose que je suis probablement juste en train de négliger.Android: Obtenir le nom de fichier de l'appareil photo?

Je veux prendre une photo de l'aperçu de la surface de la caméra, et enregistrez-le sd_card. Cela fonctionne presque parfaitement. Je lui assigne un nom de fichier, et pour une raison ou une autre, il n'utilise pas le nom de fichier.

C'est ce que je suis en train de faire:

Button imagecapture = (Button)findViewById(R.id.imagecapture); 
    imagecapture.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      String filename = null; 
      ImageCaptureCallback iccb = null; 

       try { 
       filename = timeStampFormat.format(new Date()); 
       ContentValues values = new ContentValues(); 
       values.put(Media.TITLE, filename); 
       values.put(Media.DESCRIPTION, "Image capture by camera"); 

       Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); 
       iccb = new ImageCaptureCallback(getContentResolver().openOutputStream(uri)); 
       } catch(Exception ex){ 
       ex.printStackTrace(); 
       Log.e(getClass().getSimpleName(), ex.getMessage(), ex); 
       } 
      camera.takePicture(mShutterCallback, mPictureCallbackRaw, iccb); 
      com.froogloid.android.gspot.Park.imageFileName = filename; 


     } 
    }); 

Il ne sera pas utiliser le nom de fichier (. Par exemple horodatage/date je demande à)

Répondre

5

Cela a été résolu par la mise en œuvre PictureCallback via une classe ImageCaptureCallback et Overriding the onPictureTaken où le fichier a été écrit via un flux de sortie de fichier. Tout ce que vous deviez faire était de changer le flux de sortie de fichier pour le nom de fichier que vous voulez.

0

il ne sauve pas l'image? dans mon application, ce code enregistre l'image, peut-être que vous utilisez la variable "filaname" pour obtenir l'image de la carte SD? pour utiliser l'image de la carte SD est préférable d'enregistrer dans variable, par exemple, "fileUri" valeur de uri.toString, fin obtenir à partir du fichier sdcard avec uri Uri.parse (fichierUri) ..

+0

Il sauvait l'image bien, j'essayais ceci: ContentValues ​​values ​​= new ContentValues ​​(); values.put (Media.TITLE, nom de fichier); Uri uri = getContentResolver() insérer (Media.EXTERNAL_CONTENT_URI, valeurs). Cela n'a pas fonctionné pour moi. Je suis allé à ce sujet de la meilleure façon que je pouvais – Chrispix

0

Ici vous allez: J'espère que cela aide/Probablement pas la meilleure façon de s'y prendre, mais ça a marché.

////////////////////////////////////////////// ///////////////////////////////// // // Ce est le rappel d'image de capture de la caméra. //
// // ///////////////////////////////////// ///////////////////////////////////////

import java.io.FileOutputStream; 
import java.io.OutputStream; 
import android.hardware.Camera; 
import android.hardware.Camera.PictureCallback; 
import android.util.Log; 
import android.widget.Toast; 

public class ImageCaptureCallback implements PictureCallback { 

    private OutputStream filoutputStream; 
    public ImageCaptureCallback(OutputStream filoutputStream) { 
    this.filoutputStream = filoutputStream; 



} 
@Override 
public void onPictureTaken(byte[] data, Camera camera) { 

    try { 
      Log.v(getClass().getSimpleName(), "onPictureTaken=" + data + " length = " + data.length); 


      FileOutputStream buf = new FileOutputStream("/sdcard/dcim/Camera/" + CameraActivity.filename + ".jpg"); 
      buf.write(data); 
      buf.flush(); 
      buf.close(); 
      // filoutputStream.write(data); 
      filoutputStream.flush(); 
      filoutputStream.close(); 

     } catch(Exception ex) { 
      ex.printStackTrace(); 
     } 
     } 

} 


enter code here