2010-07-22 64 views
-1

下面是重要的東西。問題是:當我點擊表面並將圖像存儲到SD card時,我有相機拍照。如果在照相機存儲照片之前單擊兩次或更多次,照相機會凍結,手機需要重新啓動。我認爲我的所有發佈內容都是正確的。我甚至實施了布爾onProgress採取一些行動,但它似乎不起作用。Android - 雙擊相機

public void onClick() { 
    if(!onProgress) 
    mCamera.takePicture(null, mPictureCallback, mPictureCallback); 
} 

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { 
    public void onPictureTaken(byte[] imageData, Camera c) { 
     onProgress=true; 
     if (imageData != null) { 
      Intent mIntent = new Intent(); 
      try { 
       FileOutputStream out = new FileOutputStream(
         "/sdcard/Deltio1.jpg"); 
       Bitmap e = BitmapFactory.decodeByteArray(imageData, 0, 
         imageData.length); 
       e.compress(Bitmap.CompressFormat.JPEG, 65, out); 
       out.close(); 
       Intent i = new Intent(ACT, MediaSend.class); 
       ACT.startActivity(i); 
      } 
      catch (Exception e) { 
       Toast 
       .makeText(
         CON, 
         "???ß??µa st?? ap????e?s?.?eßa???e?te ?t? ??ete sdcard e??atest?µ???", 
         Toast.LENGTH_LONG).show(); 
       ACT.finish(); 
      } 

      // FileUtilities.StoreByteImage(mContext, imageData, 
      // 50, "ImageName"); 

      SystemClock.sleep(2000); 
      mCamera.startPreview(); 

      onProgress=false; 

      // setResult(FOTO_MODE,mIntent); 
      // finish(); 
     } 
    } 
}; 

您可以參考the entire code

回答

2

問題是您的onProgress標誌。你應該在

public void onClick() { 
     if(!onProgress){ 
        **onProgress = true;** 
      mCamera.takePicture(null, mPictureCallback, mPictureCallback); 
        } 

    } 

通常它設置爲true,還有就是takePicture()PictureCallback之間ATLEAST 300-500毫秒的延遲,因爲相機傳感器具有: 1.進行自動對焦操作 2.停止預覽 3.捕獲預覽數據 4.編碼原始數據 5.並且Fianlly調用PictureCallback方法。

Regards, Anirudh。

+0

不知道。謝謝你的工作。你是否知道有相機閃光燈和自動對焦的示例代碼? – weakwire 2010-07-22 13:33:22

+0

API演示本身有一個自動對焦代碼。通常,閃存支持因設備而異,因爲傳感器和芯片組必須支持它。我認爲有點難以掌握該代碼。 – aniait 2010-07-24 11:34:11