Android: получение имени файла с камеры?

У меня возникла проблема с чем-то, что я, вероятно, просто не замечаю.

Я хочу сделать снимок из предварительного просмотра поверхности камеры и сохранить его на sd_card. Это работает ПОЧТИ идеально. Я присвоил ему имя файла, но он не использует filename.

Вот что я пытался сделать:

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

Он не будет использовать имя файла (т.е. отметку времени / даты, о которой я прошу.)

7
0
10 583
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это было решено путем реализации PictureCallback через класс ImageCaptureCallback и переопределения onPictureTaken, в котором файл записывался через поток вывода файла. Все, что вам нужно было сделать, это изменить поток вывода файла на желаемое имя файла.

изображение не сохраняется? в моем приложении этот код сохраняет изображение, может быть, вы используете переменную filaname для получения изображения с SD-карты? чтобы использовать изображение с SD-карты, лучше сохранить в переменной, например, значение "fileUri" в uri.toString, а в конце получить из файла SDCard с помощью uri Uri.parse (fileUri) ..

Изображение отлично сохранялось, я пробовал следующее: ContentValues ​​values ​​= new ContentValues ​​(); values.put (Media.TITLE, имя файла); Uri uri = getContentResolver (). Insert (Media.EXTERNAL_CONTENT_URI, значения); У меня это не сработало. Я сделал все, что мог

Chrispix 01.02.2009 08:13

Надеюсь, это поможет / Возможно, не лучший способ сделать это, но это сработало. Вот так:
Это обратный вызов изображения захвата камеры.

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

Другие вопросы по теме