這是一個自製簡易相機的範例練習,與API Demo 裡的Preview 程式不同,本程式以Activity為基底,在Layout 配置了三個按鈕,分別處理「開啟相機預覽」、「關閉相機」、「拍照」的工作,當按下「拍照」按鈕,程式將畫面擷取下來後,儲存於「SD」記憶卡暫存檔,最後將拍照下來的圖檔顯示於Activity 裡的ImageView 中。
將此專案程式升級至Android 1.5 SDK環境之後
雖專案設定為1.1,但在執行時會發現一個現象
即按下「開啟相機預覽」,再按下「關閉預覽」
若再一次「開啟相機預覽」則會發生以下Exception:
Connect E from ICameraClient 0x....
new client (0x...) sttempting to connect - rejected
輸出Exception的原因為:"Out of memory"
請修改本程式,可避免此問題發生:
/* 自訂初始相機函數 */
private void initCamera()
{
if(!bIfPreview)
{
/* 若相機非在預覽模式,則開啟相機 */
try
{
/*
* The Heap 是應用程式在手機裡執行所配置的空間
* 當超過預設的16 MB(每一個應用程式)時就會導致 "Out of memory"的錯誤
* 目前看來是Cupcake(AVD 1.5)才會發生
* Connect E from ICameraClient 0x....
* new client (0x...) sttempting to connect - rejected
* */
mCamera01 = Camera.open();
}
catch(Exception e)
{
Log.e(TAG, e.getMessage());
}
}
}