歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發:Camera初探——控制攝像頭拍照

實習接觸的項目中需要調用系統攝像頭進行拍照,通過完成這個功能點暫時初步了解了Android中的Camera,當然目前只是停留在使用階段,對於Camera的深度剖析有機會也要了解一下。

通過Camera控制攝像頭拍照的步驟:

1.調用Camera的open()方法打開相機。

2.調用Camera的setParameters()方法獲取拍照參數。該方法返回一個Camera.Parameters對象。

3.調用Camera.Paramers對象方法設置拍照參數

4.調用Camera的setParameters,並將Camera.Paramers作為參數傳入,這樣即可對相機的拍照參數進行控制

5.調用Camera的startPreview()方法開始預覽取景,在預覽取景之前需要調用Camera的setPreViewDisplay(SurfaceHolder holder)方法設置使用哪個SurfaceView來顯示取景圖片。

6.調用Camera的takePicture()方法進行拍照.

7.結束程序時,調用Camera的StopPriview()結束取景預覽,並調用release()方法釋放資源。

運行效果:

涉及Camera使用的相關代碼:

private void initCamera()
 {
  if (!isPreview)
  {
   camera = Camera.open();  //1.調用Camera的open()方法打開相機。
  }
  if (camera != null && !isPreview)
  {
   try
   {
    //2.調用Camera的setParameters()方法獲取拍照參數。該方法返回一個Camera.Parameters對象。
    Camera.Parameters parameters = camera.getParameters();   
    //3.調用Camera.Paramers對象方法設置拍照參數
    // 設置預覽照片的大小
    parameters.setPreviewSize(screenWidth, screenHeight);
    // 每秒顯示4幀
    parameters.setPreviewFrameRate(4);
    // 設置圖片格式
    parameters.setPictureFormat(PixelFormat.JPEG);
    // 設置JPG照片的質量
    parameters.set("jpeg-quality",85);
    //設置照片的大小
    parameters.setPictureSize(screenWidth, screenHeight);   
   
    //4.調用Camera的setParameters,並將Camera.Paramers作為參數傳入,這樣即可對相機的拍照參數進行控制
    camera.setParameters(parameters);   
    /**
    *  5.調用Camera的startPreview()方法開始預覽取景,在預覽取景之前需要調用
    *  Camera的setPreViewDisplay(SurfaceHolder holder)方法設置使用哪個SurfaceView來顯示取景圖片。
    *  通過SurfaceView顯示取景畫面
    */   
    camera.setPreviewDisplay(surfaceHolder);
    // 開始預覽
    camera.startPreview();
    // 自動對焦
    camera.autoFocus(afcb);
   }
   catch (Exception e)
   {
    e.printStackTrace();
   }
   isPreview = true;
  }
 }

 

 

  //設置監聽器,觸摸屏幕即拍照
  sView.setOnTouchListener(new View.OnTouchListener() {   
   public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    if(event.getAction()==MotionEvent.ACTION_DOWN){
     if (camera != null)
     {
      // 6.調用Camera的takePicture()方法進行拍照.
      camera.takePicture(null, null , myjpegCallback);
      return true;
     }
    }
    return false;
   }
  });

Copyright © Linux教程網 All Rights Reserved