Frage

lief ich in ein Problem mit etwas, das ich wahrscheinlich bin gerade mit Blick auf.

Ich möchte ein Bild von der Oberfläche Vorschau der Kamera nehmen und es in die sd_card speichern. Dies funktioniert nahezu perfekt. Ich zugewiesen es einen Dateinamen, aber nicht die filename verwenden.

Das ist, was ich zu tun versucht:

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

Es wird nicht die Dateinamen verwenden (das heißt Zeit / Datum-Stempel, frage ich ihn.)

War es hilfreich?

Lösung

Dieses gelöst durch PictureCallback über eine ImageCaptureCallback Klasse Implementierung und Überschreiben der onPictureTaken, wo die Datei über einen Dateiausgabestrom geschrieben wurde. Alles, was Sie tun musste, war die Fileoutput-Stream an den Dateinamen möchten Sie ändern.

Andere Tipps

es nicht Bild speichern? in meiner app speichert diese Code-Bild, vielleicht verwenden Sie Variable „filaname“ Bild von der SD-Karte zu bekommen? Bild zu verwenden aus sdcard besser ist in der Variablen zu speichern, für examople "fileURI" Wert von uri.toString, erhalten Ende aus sdcard Datei mit uri Uri.parse (fileURI) ..

Hope this helps / Wahrscheinlich nicht der beste Weg, um darüber zu gehen, aber es funktioniert. Hier gehen Sie:
Dies ist der Kamera-Capture-Bild Rückruf .

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();
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top