게시판에다가 올려서 개발정보로 다시 올립니당~!!

 

잘 뜯어서 써보세요!!

 

 

//셔터 버튼
        shutterbutton = (ImageButton)findViewById(R.id.take);
        savebutton = (ImageButton)findViewById(R.id.save);
        shutterbutton.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
          //surface view화면을 저장하는 함수
          camera.takePicture(shutterCallback, rawCallback, mPicutureListener);
          savebutton.setVisibility(View.VISIBLE);
          shutterbutton.setVisibility(View.GONE);
          onPause();
          Toast.makeText(measure.this,"셔터를 다시 누르시면 저장됩니다!", Toast.LENGTH_LONG).show();
         } 
        });
       
        savebutton.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    //화면캡쳐부분
          View v1 = view1.getRootView();
          v1.setDrawingCacheEnabled(true);
         bm = v1.getDrawingCache();
         showScreen(bm);
        
         sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
           Uri.parse("file://" + Environment.getExternalStorageDirectory())));
         Toast.makeText(measure.this,"저장완료!", Toast.LENGTH_LONG).show();
         finish();
   }
         
        });
        Log.d(TAG, "onCreate'd");
    }
  //캡쳐부분
 private void showScreen(Bitmap bm) {
  try {
   File path = new File("/sdcard/FunFun");
   
    if(! path.isDirectory()) {
      path.mkdirs();
   }
   
   FileOutputStream out = new FileOutputStream("/sdcard/"+
     System.currentTimeMillis()+".jpeg");
   bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
  } catch (FileNotFoundException e) {
   Log.d("FileNotFoundException:", e.getMessage());
  }  
 }

 

ShutterCallback shutterCallback = new ShutterCallback() {
  public void onShutter() {
   Log.d(TAG, "onShutter'd");
  }
 };

 /** Handles data for raw picture */
 PictureCallback rawCallback = new PictureCallback() {
  public void onPictureTaken(byte[] data, Camera camera) {
   Log.d(TAG, "onPictureTaken - raw");
  }
 };
 
 //JPEG 이미지 생성 후에 호출
   private Camera.PictureCallback mPicutureListener =
                new Camera.PictureCallback() {
     public void onPictureTaken(byte[] data, Camera camera) {
       Log.i(TAG, "Picture Taken");
       if (data != null) {
         Log.i(TAG, "JPEG Picture Taken");
         BitmapFactory.Options options =
               new BitmapFactory.Options();
         options.inSampleSize = 2;
         Bitmap bitmap =BitmapFactory.decodeByteArray(
               data, 0, data.length);  //bitmap 변수에 사진을 저장
        
         Matrix matrix = new Matrix();
       // rotate the Bitmap
       matrix.postRotate(90);
       // recreate the new Bitmap
       Bitmap rotateBitmap = Bitmap.createBitmap(bitmap, 0, 0,
         bitmap.getWidth(), bitmap.getHeight(), matrix, true);     
         //서피스뷰를 없애고 이미지뷰를 불러와서 사진을 지정함
         surfaceView.setVisibility(View.GONE);
         Picturetmp. setVisibility(View.VISIBLE);
         Picturetmp.setImageBitmap(rotateBitmap);
         Picturetmp.setScaleType(ImageView.ScaleType.FIT_XY);
       }
     }
   };
 public void surfaceChanged(SurfaceHolder holder, int format, int width,
   int height) {
  // TODO Auto-generated method stub
  if(previewing){
   camera.stopPreview();
   previewing = false;
  }
  
  if (camera != null){
   try {
    camera.setPreviewDisplay(surfaceHolder);
    camera.startPreview();
    previewing = true;

          
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }

 public void surfaceCreated(SurfaceHolder holder) {
  // TODO Auto-generated method stub
  camera = Camera.open();
  
  //카메라를 90도 꺾어서 세로방향으로 서페이스뷰에 프리뷰를 출력
  camera.setDisplayOrientation(90);
  Camera.Parameters parameters = camera.getParameters();
  camera.setParameters(parameters);
  //프리뷰 디스플레이를 담당한 서페이스 홀더설정
  try {
   camera.setPreviewDisplay(holder);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 //카메라가 종료될시 surcafe를 제거하고
 //카메라의 프리뷰기능을 종료후 카메라 hardware를 종료시킴

 public void surfaceDestroyed(SurfaceHolder holder) {
  // TODO Auto-generated method stub
  camera.stopPreview();
  camera.release();
  camera = null;
  previewing = false;
  
 }