Android: Obter nome de arquivo da câmera?

votos
6

Tenho executado em um pequeno problema com algo que eu estou provavelmente apenas com vista.

Quero tirar uma foto da pré-visualização da superfície da câmera, e guardá-lo para o sd_card. Isso funciona quase perfeitamente. I atribuir-lhe um nome de arquivo e por uma razão ou outra, ele não usa o nome do arquivo.

Isto é o que eu tenho tentado fazer:

    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;


        }
    }); 

Ele não vai usar o nome do arquivo (ou seja, data / hora eu pedir para ele.)

Publicado 18/01/2009 em 21:30
fonte usuário
Em outras línguas...                            


3 respostas

votos
5

Isto foi resolvido através da implementação de PictureCallback via uma classe ImageCaptureCallback e Substituindo o onPictureTaken onde o arquivo estava sendo escrito através de um fluxo de saída de arquivo. Tudo o que tinha a fazer era mudar o fluxo FileOutput ao nome do arquivo que você deseja.

Respondeu 23/01/2009 em 14:43
fonte usuário

votos
0

Aqui vai: Espero que isso ajude / Provavelmente não é a melhor maneira de ir sobre isso, mas funcionou.

Este é o retorno de chamada captura de imagem da câmera .

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();
        }
        }

}
Respondeu 25/02/2009 em 22:25
fonte usuário

votos
0

ele não salva imagem? em meu aplicativo este código guarda uma imagem, talvez você use variável "filaname" para obter imagem sdcard? para usar a imagem sdcard é melhor guardar na variável, por examople, "fileUri" valor de uri.toString, final começa a partir de arquivos sdcard com uri URI.parse (fileUri) ..

Respondeu 26/01/2009 em 14:01
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more