實習接觸的項目中需要調用系統攝像頭進行拍照,通過完成這個功能點暫時初步了解了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;
}
});