基本能使用步驟:
1、在Activity的OnCreate函數(shù)中設置好SurfaceView鲜结,包括設置SurfaceHolder.Callback對象和SurfaceHolder對象的類型脂信,具體如下SurfaceView mpreview = (SurfaceView) this.findViewById(R.id.camera_preview);SurfaceHolder mSurfaceHolder = mpreview.getHolder();mSurfaceHolder.addCallback(this);mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
2唇兑、在SurfaceHolder.Callback的surfaceCreated函數(shù)中锨并,使用Camera的Open函數(shù)開機攝像頭硬件,這個API在SDK 2.3之前五垮,是沒有參數(shù)的乍惊,2.3以后支持多攝像頭,所以開啟前可以通過getNumberOfCameras先獲取攝像頭數(shù)目放仗,再通過getCameraInfo得到需要開啟的攝像頭id润绎,然后傳入Open函數(shù)開啟攝像頭,假如攝像頭開啟成功則返回一個Camera對象诞挨,否則就拋出異常莉撇;
3、開啟成功的情況下惶傻,在SurfaceHolder.Callback的surfaceChanged函數(shù)中調(diào)用getParameters函數(shù)得到已打開的攝像頭的配置參數(shù)Parameters對象稼钩,如果有需要就修改對象的參數(shù),然后調(diào)用setParameters函數(shù)設置進去(SDK2.2以后达罗,還可以通過Camera::setDisplayOrientation設置方向)坝撑;
4、同樣在surfaceChanged函數(shù)中粮揉,通過Camera::setPreviewDisplay為攝像頭設置SurfaceHolder對象巡李,設置成功后調(diào)用Camera::startPreview函數(shù)開啟預覽功能(馬上開始預覽的話,可能黑屏扶认,因為相機初始化等需要一點時間)
5侨拦、假設要支持自動對焦功能,則在需要的情況下辐宾,或者在上述surfaceChanged調(diào)用完startPreview函數(shù)后狱从,可以調(diào)用Camera::autoFocus函數(shù)來設置自動對焦回調(diào)函數(shù),該步是可選操作叠纹,有些設備可能不支持季研,可以通過Camera::getFocusMode函數(shù)查詢
6.可以進行拍照或者視頻錄制了
7.用完記得回收,不管是界面切換還是誉察,最好在onPause中
注意事項
1.檢測攝像頭硬件
如果應用程序未利用manifest聲明對攝像頭需求進行特別指明与涡,則應該在運行時檢查一下攝像頭是否可用〕制可用PackageManager.hasSystemFeature()方法來進行這種檢查?
2.訪問攝像頭
可用Camera.open()方法來訪問主攝像頭驼卖,并確保捕獲全部的異常
3.檢查攝像頭
通過Camera.getParameters()方法來獲取信息 ,設置想要的參數(shù)(分辨率鸿秆,焦距等)
4.創(chuàng)建預覽類
SurfaceView可以調(diào)整并捕獲圖片和視頻
5.預覽方向
可以利用setDisplayOrientation()?方法來旋轉預覽畫面酌畜。為了讓預覽方向跟隨手機方向的變化而改變,可以在預覽類的surfaceChanged()方法中實現(xiàn)卿叽,先用Camera.stopPreview()停止預覽桥胞,改變方向后再用Camera.startPreview()開啟預覽恳守。
6.獲取圖像
可以通過Camera.takePicture()方法來獲取圖片,此方法用到三個參數(shù)并從攝像頭接收數(shù)據(jù)埠戳。如果要以JPEG的格式接收數(shù)據(jù),必須實現(xiàn)Camera.PictureCallback接口蕉扮,以接收圖片數(shù)據(jù)并寫入文件整胃。
7.釋放攝像頭
用Camera.release()方法可以釋放Camera對象的實例
一些攝像頭相關的名詞
1、常見圖像格式
1.1? ?RGB格式:
傳統(tǒng)的紅綠藍格式喳钟,比如RGB565屁使,RGB888,其16-bit數(shù)據(jù)格式為5-bit R + 6-bit G + 5-bit B奔则。G多一位蛮寂,原因是人眼對綠色比較敏感。
1.2?YUV格式:
luma?(Y)?+?chroma?(UV)?格式易茬。YUV是指亮度參量和色度參量分開表示的像素格式酬蹋,而這樣分開的好處就是不但可以避免相互干擾,還可以降低色度的采樣率而不會對圖像質(zhì)量影響太大抽莱。YUV是一個比較籠統(tǒng)地說法范抓,針對它的具體排列方式,可以分為很多種具體的格式食铐。色度(UV)定義了顏色的兩個方面─色調(diào)與飽和度匕垫,分別用CB和CR表示。其中虐呻,Cr反映了RGB輸入信號紅色部分與RGB信號亮度值之間的差異象泵。而Cb反映的是RGB輸入信號藍色部分與RGB信號亮度值之間的差異。主要的采樣格式有YCbCr 4:2:0斟叼、YCbCr 4:2:2偶惠、YCbCr 4:1:1和 YCbCr 4:4:4。?
1.3?RAW data格式:? ?
RAW圖像就是CMOS或者CCD圖像感應器將捕捉到的光源信號轉化為數(shù)字信號的原始數(shù)據(jù)朗涩。??
2. 相關技術指標
2.1 圖像解析度/分辨率(Resolution):
SXGA(1280 x1024)又稱130萬像素 XGA(1024 x768)又稱80萬像素 SVGA(800 x600)又稱50萬像素 VGA(640x480)又稱30萬像素(35萬是指648X488) CIF(352x288) 又稱10萬像素 SIF/QVGA(320x240) QCIF(176x144) QSIF/QQVGA(160x120)
2.2 彩色深度(色彩位數(shù)):
k256色灰階洲鸠,有256種灰色(包括黑白)。 15或16位彩色(高彩色):65,536種顏色馋缅。 24位彩色(真彩色):每種原色都有256個層次扒腕,它們的組合便有256*256*256種顏色。 32位彩色:除了24位彩色的顏色外萤悴,額外的8位是儲存重疊圖層的圖形資料(alpha頻道)瘾腰。
2.3 光學變焦和數(shù)碼變焦:?
光學變焦: 通過鏡頭的調(diào)整,拉近拉遠所要拍攝的對象覆履,保持像素不變和畫質(zhì)基本不變蹋盆,卻可以拍到自己 理想的物像费薄。 數(shù)碼變焦:其實沒有什么變焦,只是從原圖片中截取出來放大栖雾,你從液晶屏幕上看到變大了楞抡,實際上畫質(zhì)并沒有本質(zhì)提高,而像素比你相機能拍攝的最大像素降低了析藕。 畫質(zhì)上說基本是雞肋把召廷,但是可以提供一些方便。?
2.4 圖像壓縮方式:
JPEG/M-JPEG?
H.261/H.263?
MPEG
?H.264?????
2.5 圖像噪音:
指的是圖像中的雜點干撓账胧。表現(xiàn)為圖像中有固定的彩色雜點竞慢。?
2.6 自動白平衡處理技術(auto White Balance):?
簡單來說就是:攝像機對白色物體的還原。相關概念:色溫治泥〕镏螅 ?
2.7 視角:
與人的眼睛成像是相成原理,簡單說就是成像范圍居夹。
2.8 自動對焦:? ? ?
??自動對焦可以分成兩大類:一類是基于鏡頭與被拍攝目標之間距離測量的測距自動對焦败潦,另一類是基于對焦屏上成像清晰的聚焦檢測自動對焦(清晰度算法)。注:變焦就是把遠處的物體拉近准脂。對焦是讓圖像清晰变屁。?
2.9 自動曝光和Gamma:? ? ??
就是光圈和快門的組合。光圈意狠,快門速度粟关,ISO。Gamma即人眼對亮度的響應曲線环戈。? ?