這是一個自製簡易相機的範例練習,與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());
      }
    }
}

創作者介紹
創作者 androidsdk 的頭像
androidsdk

Google Android SDK 開發範例大全2

androidsdk 發表在 痞客邦 留言(5) 人氣()