正文

使用Camera類(4)

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


既然已經(jīng)建立了活動及預(yù)覽Surface,現(xiàn)在我們準(zhǔn)備好開始使用實際的Camera對象。

當(dāng)創(chuàng)建Surface時,由于SurfaceHolder.Callback的存在,它將在代碼中的觸發(fā)調(diào)用surfaceCreated方法。此時可以通過調(diào)用Camera類上的靜態(tài)方法open獲得Camera對象。

Camera camera;

public void surfaceCreated(SurfaceHolder holder) { 

camera = Camera.open();

隨后,我們想要將預(yù)覽顯示設(shè)置為正在使用的SurfaceHolder,它通過回調(diào)提供給我們的方法。需要將該方法包裝在try...catch塊中,因為它可能會拋出IOException。如果發(fā)生了這種情況,那么我們會希望釋放該Camera對象;否則,它將綁定攝像頭的硬件資源,使其不能用于其他應(yīng)用程序。

try 

{

camera.setPreviewDisplay(holder);

}

catch (IOException exception) 

camera.release();

}

最后,啟動攝像頭預(yù)覽。

camera.startPreview();

}

相應(yīng)地,在surfaceDestroyed中也需要釋放該Camera對象。我們將首先調(diào)用stopPreview,以確保應(yīng)該釋放的資源都被清理。

public void surfaceDestroyed(SurfaceHolder holder) {

camera.stopPreview();

camera.release();

}

運行這段代碼,您可能會發(fā)現(xiàn)預(yù)覽有些奇怪。它會逆時針旋轉(zhuǎn)預(yù)覽圖像90°,如圖2-1所示。


上一章目錄下一章

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