사진 촬영 후 갤러리에서 찍은 사진을 확인 할려고 하는데 바로 확인이 되지 않고 재부팅 후 갤러리에 들어갔을때 확인이 됩니다. 소스가 문제가 있나 싶어서 넥서스원에서 돌렸을 때에는 문제가 없고 디자이어에서만 이런 상황이 발생하네요.

소스는 커니의 안드로이드 보고 공부하고 하나씩 쳐봤는데 문제가 무엇인지 몰라서 여기까지 오게됐습니다.

이런 문제 해결 하신 분 답변 부탁드립니다. 감사합니다.


public class CameraTest extends Activity {
    private Preview mPreview;
    private Button getPictureButton;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        mPreview = new Preview(this);
        LayoutInflater inflater = getLayoutInflater();
        RelativeLayout rl = (RelativeLayout)inflater.inflate(R.layout.main, null);
        FrameLayout fl = new FrameLayout(this);
        fl.addView(mPreview);
        fl.addView(rl);
       
       
        setContentView(fl);
       
        getPictureButton = (Button)rl.findViewById(R.id.cameraButton);
        getPictureButton.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View v) {
                mPreview.getPicture();
            }
        });
    }
   
    class Preview extends SurfaceView implements SurfaceHolder.Callback{
        SurfaceHolder mHolder;
        Camera mCamera;
        Context mCtx;
       
        Preview(Context context){
            super(context);
            mCtx = context;
            mHolder = getHolder();
            mHolder.addCallback(this);
            mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int w,
                int h) {
            Camera.Parameters parameters = mCamera.getParameters();
            parameters.setPreviewSize(w, h);
            mCamera.setParameters(parameters);
            mCamera.startPreview();
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            mCamera = Camera.open();
            try{
                mCamera.setPreviewDisplay(holder);
            } catch(IOException exception){
                mCamera.release();
                mCamera = null;
            }
           
        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            mCamera.stopPreview();
            mCamera.release();
            mCamera = null;
        }
       
        public void getPicture(){
            mCamera.takePicture(null, null, new PictureCallback() {
               
                @Override
                public void onPictureTaken(byte[] data, Camera camera) {
                    Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length);
                    MediaStore.Images.Media.insertImage(getContentResolver(), picture, "Test", "Test image");
                    Toast.makeText(CameraTest.this, "사진이 저장되었습니다.", Toast.LENGTH_LONG).show();
                    mCamera.startPreview();
                }
            });
           
           
        }
               
    }
}