사진 촬영 후 갤러리에서 찍은 사진을 확인 할려고 하는데 바로 확인이 되지 않고 재부팅 후 갤러리에 들어갔을때 확인이 됩니다. 소스가 문제가 있나 싶어서 넥서스원에서 돌렸을 때에는 문제가 없고 디자이어에서만 이런 상황이 발생하네요.
소스는 커니의 안드로이드 보고 공부하고 하나씩 쳐봤는데 문제가 무엇인지 몰라서 여기까지 오게됐습니다.
이런 문제 해결 하신 분 답변 부탁드립니다. 감사합니다.
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();
}
});
}
}
}




시간이 쫌 됫는데..
저도 이런 문제를 겪다가..해결했는데요
보니까 다른 디바이스와는 달리 디자이어는 갤러리 UI가 다른 디바이스와는 다르더군요
사진이 저장된 sd카드를 다시 스캐닝 하시면 바로 잡힙니다..
인텐트로 스캐닝 하는거구요..구글링하면 한줄로 딱 나오니..그거 카메라 꺼지거나 할떄 처리되도록 넣으시면 문제 없이 됩니다!!
망할 디자이어.ㅠ.ㅠ