天天看點

Windows Phone 開發——相機功能開發

  相機功能是手機差別于PC的一大功能,在做手機應用時,如果合理的利用了拍照功能,可能會給自己的應用增色很多。使用Windows Phone的相機功能,有兩種方法,一種是使用PhotoCamera類來建構自己的相機UI,另外一種是通過CameraCaptureTask選擇器來實作該功能。

他們的差別是:

PhotoCamera類允許應用控制照片屬性,如 ISO、曝光補償和手動對焦位置,應用可以對照片有更多的控制,當然也會麻煩很多。需要實作閃光燈、對焦、分辨率、快門按鈕等操作。

CameraCaptureTask拍照會調用系統的相機功能,傳回一個有照片資料的傳回值,同時一旦拍照,就會進入手機相冊。

一. CameraCaptureTask選擇器。

首先需要引用

聲明任務對象,需要在頁面的構造函數之前聲明

在構造函數中執行個體化CameraCaptureTask對象,并且注冊回調方法。

在應用程式中的所需位置添加以下代碼,例如按鍵點選事件中

在頁面中添加已完成事件處理程式的代碼。此代碼在使用者完成任務後運作。結果是一個 PhotoResult對象,該對象公開包含圖像資料的流。

二. PhotoCamera

  PhotoCamera是在windows phone os 7.1開始加入的,在使用之前需要給應用添加通路相機的權限,在

WMAppManifest.xml中添加ID_CAP_ISV_CAMERA

建立UI

在建立取景器時,一般會使用VideoBrush,如果需要支援橫豎屏的切換,則需要加入RelativeTransform,如下代碼是一個典型的相機UI

當然你還要考慮頁面上的其他元素,比如點選取景器對焦,快門、閃光燈按鈕等,這些可随個人洗好自定義。

實作取景器和相關相機事件。

首先實作取景器,先判斷手機有沒有相關的硬體裝置(背部相機(主)或者前部相機)

在加載時也需要實作各種操作事件

上面加載了這麼多事件,需要在離開此頁面時釋放:

上面這些事件,看看名字估計也就懂了是幹啥的了,這裡說明下他們的執行順序,CaptureThumbnailAvailable —>CaptureImageAvailable —>CaptureCompleted。

拍出了照片後需要儲存,可以儲存到相機中,使用的是SavePictureToCameraRoll方法,同時可以儲存到獨立存儲空間中,友善以後讀取(如果僅僅儲存在相冊中,下次讀取時必須使用照片選擇器讓使用者去選擇照片):

儲存照片有兩個方法:SavePicture和SavePictureToCameraRoll,前面的方法是儲存到照片中心“儲存的照片”中,後一種方法是儲存到“本機拍照”中。

對于閃光燈、對焦、分辨率以及快門都有相應的方法,從上面的代碼中也可以看到快門有半按、全按、釋放等事件,這裡不再贅述,可以從源代碼中看到相關的事件。

繼續閱讀