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

голоса
6

Я побежал в небольшой вопрос с чем-то, что я, наверное, просто с видом.

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

Это то, что я пытаюсь сделать:

    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;


        }
    }); 

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

Задан 18/01/2009 в 21:30
источник пользователем
На других языках...                            


3 ответов

голоса
5

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

Ответил 23/01/2009 в 14:43
источник пользователем

голоса
0

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

Это камера захвата изображения обратного вызова .

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

}
Ответил 25/02/2009 в 22:25
источник пользователем

голоса
0

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

Ответил 26/01/2009 в 14:01
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more