제가 구현한 코드는 한번찍고 끝입니다 ㅠㅠ
계속해서 촬영화면이 보이도로 하려면 어떻게 해야죠?
public class Blog_camera extends Activity {
Camera camera;
Preview preview;
ImageView imageView;
Button B_capture;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
this.setContentView(R.layout.main);
preview=new Preview(this);
imageView=(ImageView)findViewById(R.id.imageView1);
((LinearLayout)findViewById(R.id.frame1)).addView(preview);
B_capture=(Button)findViewById(R.id.button1);
B_capture.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
preview.mCamera.takePicture(null,null,jpegC);
}
});
}
Camera.PictureCallback jpegC=new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
// TODO Auto-generated method stub
long captureDate=System.currentTimeMillis();
Date today=new Date(captureDate);
SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss", Locale.KOREA);
String dTime=formatter.format(today);
FileOutputStream outStream=null;
try{
outStream=new FileOutputStream(String.format("/mnt/sdcard/%s.jpg", dTime));
outStream.write(data);
outStream.close();
}catch(FileNotFoundException e){
}catch(IOException e){
}
File captureFile=new File(String.format("/mnt/sdcard/%s.jpg", dTime));
FileInputStream inputStream=null;
try{
inputStream=new FileInputStream(captureFile);
preview.setVisibility(View.GONE);
Bitmap captureBitmap=BitmapFactory.decodeStream(inputStream,null,null);
imageView.setImageBitmap(captureBitmap);
inputStream.close();
}catch(FileNotFoundException e){
}catch(IOException e){
}
}
};
public class Preview extends SurfaceView implements Callback, PictureCallback {
//protected Object mCamera;
//private static Uri mImageCaptureUri;
private SurfaceHolder mHolder;
private Camera mCamera;
public Preview(Context context) {
super(context);
mHolder=getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
mCamera=Camera.open();
try{
mCamera.setPreviewDisplay(holder);
}catch(Exception e){
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// TODO Auto-generated method stub
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(90,90);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
//mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.release();
mCamera=null;
}
@Override
public void onPictureTaken(byte[] arg0, Camera mCamera) {
// TODO Auto-generated method stub
}
}




preview.setVisibility(View.GONE);
프리뷰라는 뷰가 GONE(존재하지않음) 상태로 변경되서 화면에서 사라지는거 같은데 이부분 조정해보세요.