本文件只涉及到使用手機的攝像頭裝置自行開發照相軟體,所以,直接使用應用程式提供的android攝像頭api。那麼接下來我們就來**一下如何使用android硬體裝置——攝像頭。
step 1:工欲善其事必先利其器,進行開發前我們先來仔細看一看android攝像頭的api都為我們提供了哪些類和介面:
類
描述
camrea
camera.parameters
相機的服務設定。
su***ceview
用來展示攝像頭拍攝的實時預覽影象,控制預覽介面
接下來我們來看一看camera類都為我們提供了那些主要的方法:
f.no
描述
1
open( )
開啟預設的相機
2
release( )
它被用來釋放在鏡頭鎖定,所以其他應用程式可以訪問它
3
setprameters( )
它是用來設定相機引數,包括前後攝像頭,閃光燈模式、聚焦模式、預覽和拍照尺寸等。
4
setpreviewdisplay(su***ceholder holder)
它是用來設定預覽拍照,繫結繪製預覽影象的su***ce
5
startpreview( )
它是用來開啟相機的預覽給使用者
6
stoppreview( )
它是用來阻止相機的預覽給使用者
7
takepicture(camera.shuttercallback shutter, camera.picturecallback raw, camera.picturecallback jpeg)
它被用來使能/禁止影象拍攝的預設快門聲音
更多方法介紹請參見文件
當然camera.parameters類中有一些必要的屬性也是要我們進行設定的:
f.no
描述
1
setpicturesize(int width,int height)
設定的尺寸。
2
setpreviewsize(int width,int height)
設定預覽**的尺寸。
3
setrotation(int angle)
集度相對於相機的方向順時針旋轉角度。
更多方法介紹請參見文件
su***ceholder.callback介面是用於處理預覽的事件,需實現如下三個方法:
i.no
描述
1
su***cecreated(su***ceholder holder):
預覽介面建立時呼叫,每次介面改變後都會重新建立,需要獲取相機資源並設定su***ceholder
2
su***cechanged(su***ceholderholder, int format, int width, int height):
預覽介面發生變化是呼叫,每次介面發生變化之後需要重新啟動預覽
3
su***cechanged(su***ceholderholder, int format, int width, int height):
預覽銷毀時呼叫,停止預覽,釋放相機資源
以上準備工作理解了之後,接下來的工作就很簡單了,只要按照如下步驟就可以輕鬆實現乙個簡單的android手機相機應用程式的編寫:
(1) 通過camera.open()來獲取camera例項;
(2) 呼叫camera的getparameters()方法獲取拍照引數。該方法返回乙個camera.parameters物件;
(3) 呼叫camera.parameters物件方法設定拍照引數;
(4) 呼叫camera的setparameters(),並將camera.parameters物件作為引數傳入,這樣即可對相機的拍照引數進行控制;
(5) 呼叫camera的startpreview()方法開始預覽取景,在預覽取景之前需要呼叫camera的setperviewdisplay(su***ceholder holder)方法設定使用哪個su***ceview來顯示取景;
(6) 呼叫camera的takepicture()方法進行拍照;
(7) 呼叫camera的stoppreview()結束取景預覽,並呼叫release()方法釋放資源;
(8) 儲存到本地;
step 2:實際案例分析
1. 開發案例1——簡單的相機實現
2. 開發案例2——可以儲存的相機
3. 開發案例3——儲存指定區域的的相機
4. 開發案例4——整體優化設計
系列博文都寫的非常好
游標那點事兒
兩種迴圈跳出方法 1 稍顯複雜點 create procedure dbo.usp cralltables client id varchar 256 asdeclare table name varchar 50 set nocount on declare t name cur cursor l...
imu那點事兒
一.對於bosch晶元的總結 offset 是指sensor的零偏。datasheet 裡邊描述的是在不同的情況下offset 的spec.offa,int 表示sensor 出廠時最初的offset spec,是component level offa,board 表示sensor 在貼到pcb ...
Spring MVC那點事兒
1 spring mvc的啟動原理?spring mvc是基於ioc容器的,因此需要先建立ioc容器,才能建立對應的spring mvc執行環境。ioc容器是通過contextloaderlistener建立的,這個類通過servletcontext建立。在springmvc中,最核心的思想其實就是...