Question

J'ai rencontré un problème avec quelque chose que je suis probablement en train de négliger.

Je souhaite prendre une photo de l'aperçu de surface de l'appareil photo et la sauvegarder dans la carte sd . Cela fonctionne presque parfait. Je lui ai attribué un nom de fichier, mais il n'utilise pas le nom de fichier .

C’est ce que j’essaie 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 n'utilisera pas le nom de fichier (c'est-à-dire l'heure et la date auxquelles je le demande.)

Était-ce utile?

La solution

Cela a été résolu en implémentant PictureCallback via une classe ImageCaptureCallback et en remplaçant le onPictureTaken où le fichier était écrit via un flux de sortie de fichier. Tout ce que vous deviez faire était de changer le flux fileoutput avec le nom de fichier souhaité.

Autres conseils

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

J'espère que cela aide / Ce n'est probablement pas la meilleure façon de s'y prendre, mais cela a fonctionné. Ici vous allez:
Il s'agit du rappel d'image de capture de la caméra .

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();
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top