2009-01-18 18 views
5

Me he encontrado con un pequeño problema con algo que probablemente estoy pasando por alto.Android: ¿Obtener el nombre de archivo de la cámara?

Quiero tomar una foto de la vista previa de la superficie de la cámara y guardarla en la tarjeta sd_card. Esto funciona CASI perfectamente. Le asigno un nombre de archivo, y por una razón u otra, no usa el nombre del archivo.

Esto es lo que he estado tratando de hacer:

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; 


     } 
    }); 

No va a utilizar el nombre de archivo (. Es decir, sello de fecha/hora lo pido a)

Respuesta

5

Esto se resolvió mediante la implementación de PictureCallback a través de una clase ImageCaptureCallback, y Anulando el onPictureTaken donde el archivo se estaba escribiendo a través de una secuencia de salida de archivo. Todo lo que tenía que hacer era cambiar la secuencia de salida del archivo al nombre de archivo que desea.

0

¿no guarda la imagen? en mi aplicación, este código guarda la imagen, ¿quizás utilizas la variable "filaname" para obtener la imagen de la tarjeta sd? para usar la imagen de una tarjeta SD es mejor guardar en la variable, para el usuario, el valor "url.toString", terminar obtener del archivo sdcard con uri Uri.parse (fileUri) ..

+0

Se estaba guardando la imagen bien, estaba intentando esto: ContentValues ​​values ​​= new ContentValues ​​(); values.put (Media.TITLE, nombre de archivo); Uri uri = getContentResolver(). Insert (Media.EXTERNAL_CONTENT_URI, values); Eso no funcionó para mí. Lo hice de la mejor manera que pude – Chrispix

0

Aquí tienes: Espero que esto ayude/Probablemente no sea la mejor manera de hacerlo, pero funcionó.

////////////////////////////////////////////// ///////////////////////////////// // // Esta es la devolución de llamada de la imagen de captura de la cámara. //
// // /////////////////////////////////////// ///////////////////////////////////////

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 
Cuestiones relacionadas