문제

나는 아마도 내가 간과하고있는 무언가로 문제를 일으켰다.

카메라의 표면 미리보기에서 사진을 찍고 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;
    }
});

파일 이름을 사용하지 않습니다 (예 : 시간/날짜 스탬프가 요청합니다.)

도움이 되었습니까?

해결책

이는 ImageCaptureCallback 클래스를 통해 PictureCallback을 구현하고 파일 출력 스트림을 통해 파일이 작성되는 onpictureTaken을 무시함으로써 해결되었습니다. 당신이해야 할 일은 파일 아웃 스 스트림을 원하는 파일 이름으로 변경하는 것입니다.

다른 팁

이미지를 저장하지 않습니까? 내 앱 에서이 코드는 이미지를 저장하면 변수 "Filaname"을 사용하여 SDCard에서 이미지를 얻을 수 있습니까? sdcard의 이미지를 사용하는 것이 변수를 저장하는 것이 좋습니다. Exames, uri.tostring의 "fileuri"값, uri uri.parse (fileuri)와 sdcard 파일에서 끝납니다.

이것이 도움이되기를 바랍니다. 아마도 가장 좋은 방법이 아니지만 효과가 있었지만 효과가있었습니다. 여기에 간다 :
이것이 카메라 캡처 이미지 콜백.

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();
        }
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top