Domanda

Ho riscontrato un problema con qualcosa che probabilmente sto solo trascurando.

Voglio scattare una foto dall'anteprima della superficie della fotocamera e salvarla nella sd_card . Questo funziona QUASI perfetto. Gli ho assegnato un nome file, ma non usa il nomefile .

Questo è quello che ho cercato di fare:

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

Non utilizzerà il nome del file (ad es. data / ora che chiedo.)

È stato utile?

Soluzione

Ciò è stato risolto implementando PictureCallback tramite una classe ImageCaptureCallback e sovrascrivendo onPictureTaken in cui il file veniva scritto tramite un flusso di output del file. Tutto quello che dovevi fare era cambiare il flusso di output del file con il nome del file che desideri.

Altri suggerimenti

non salva l'immagine? nella mia app questo codice salva l'immagine, forse usi la variabile " nome file " ottenere l'immagine da sdcard? per utilizzare l'immagine da sdcard è meglio salvare in variabile, per gli utenti, "fileUri" valore di uri.toString, end get dal file sdcard con uri Uri.parse (fileUri) ..

Spero che questo aiuti / Probabilmente non è il modo migliore per farlo, ma ha funzionato. Ecco qua:
Questa è la richiamata dell'immagine di acquisizione della fotocamera .

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();
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top