正文

使用Camera類(1)

Android多媒體開發(fā)高級編程 作者:(美)艾佛瑞


可以使用Android中的Camera類訪問該設(shè)備上的攝像頭硬件。它使我們能夠真正捕獲圖像,并通過其嵌套的Camera.Parameters類更改不同的屬性設(shè)置,例如是否應(yīng)該將閃光燈激活以及如何設(shè)置白平衡的值。

http://developer.android.com/reference/android/hardware/Camera.html

2.1.1  CAMERA權(quán)限

為了使用Camera類捕獲圖像,需要在AndroidManifest.xml文件中指定必需的CAMERA權(quán)限。

<uses-permission android:name="android.permission.CAMERA"/>

2.1.2  預(yù)覽Surface

同樣,在開始使用攝像頭之前,還需要創(chuàng)建某種類型的Surface(表面),使得Camera應(yīng)用程序能夠在其上繪制取景器(viewfinder)或預(yù)覽圖像。Surface是Android中的一個抽象類,表示繪制圖形或圖像的位置。提供一個繪圖Surface的簡單方法是使用SurfaceView類。SurfaceView是在標(biāo)準(zhǔn)視圖中提供Surface的具體類。

為了在布局中指定SurfaceView,只須在任何普通的布局XML中使用<SurfaceView />元素。以下是一種基本的布局,其僅僅在用于攝像頭預(yù)覽的LinearLayout(線性布局)中實(shí)現(xiàn)一個SurfaceView。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"android:layout_width="fill_parent"

android:layout_height="fill_parent"

<SurfaceView android:id="@+id/CameraView" android:layout_width=

"fill_parent" android:layout_height="fill_parent"></SurfaceView> 

</LinearLayout>

為了在代碼中實(shí)現(xiàn)通過Camera類使用此SurfaceView,需要添加一個SurfaceHolder類。SurfaceHolder類可以作為Surface上的一個監(jiān)控器,并且通過回調(diào)提供接口,從而讓我們知道什么時候創(chuàng)建、銷毀或更改Surface。同時,SurfaceView類還提供了一個getHolder方法,用于獲得一個對應(yīng)其Surface的SurfaceHolder對象。

以下是一個代碼片段,其訪問在布局XML中聲明的SurfaceView,并從中獲得一個SurfaceHolder。同時,它還設(shè)置該Surface是一個“推送”類型的Surface,這意味著在Surface本身的外部維持繪圖緩沖區(qū)。在這種情況下,該緩沖區(qū)由Camera類管理?!巴扑汀鳖愋偷腟urface是Camera預(yù)覽所需的Surface。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號