Android: Получение имени файла с камеры? - PullRequest
7 голосов
/ 18 января 2009

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

Я хочу сделать снимок с предпросмотра поверхности камеры и сохранить его на SD-карте. Это работает почти идеально. Я назначил ему имя файла, но он не использует имя файла.

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

    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;


        }
    }); 

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

Ответы [ 3 ]

6 голосов
/ 23 января 2009

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

0 голосов
/ 26 февраля 2009

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

Это обратный вызов для захвата изображения с камеры .

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

}
0 голосов
/ 26 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...