2015-04-05 107 views
1

我有一個相機應用程序,我可以做一些幫助。在我的Camera Fragment中,我調用了takePicture方法,我打算暫停預覽(根據the API)。當拍照時預覽沒有暫停

在我舊的HTC One X上這是真的,但剛升級到HTC One mini2,預覽不再停頓。

這是否有合乎邏輯的原因?對我的代碼的任何建議更改?

我打電話takePicture用下面的代碼:

if (myCamera != null) { 

    FragmentManager fm = getFragmentManager(); 
    PhotoHandler myphotohandler = new PhotoHandler(fm, mycontext, getView(), Photo_Type, photonumber, getDir(Project_Name), lmanager, projecttag); 

    ShutterCallback shutter = new ShutterCallback() { 
     public void onShutter() { 
      button_takephoto = (ImageButton) getView().findViewById(R.id.button_takephoto); 
      button_takephoto.setImageResource(R.drawable.shutter_closed); 
      } 
     }; 

     myCamera.takePicture(shutter, null, null, myphotohandler); 

而且我PhotoHandler類實現PictureCallback。

任何建議或類似的經驗,將不勝感激。

+0

興奮地獲得這篇文章的風滾草獎,但有任何其他人處理相機,不會暫停預覽時拍攝照片? – bbarrett 2015-05-24 19:23:43

+0

晚會有點晚,但是。在我的HTC One上,我可以拍攝第一張照片,預覽可以正確暫停。然後,如果用戶丟棄圖片,我恢復預覽,當他拍攝第二張圖片時,預覽不會暫停。你有沒有找到一個很好的解決方法? – 2015-06-19 15:05:29

+0

@MartinDevillers嗨,感謝您的評論。我找到了一個解決方法,在拍攝照片後生成暫停預覽。我現在將它發佈爲我的問題的答案。謝謝。 – bbarrett 2015-06-22 23:31:36

回答

0

我找到的解決方案是在Camera.ShutterCallback中手動停止預覽。最初,我只有一個Camera.PictureCallback處理我的應用程序對正在拍攝的圖片的響應。

 if (myCamera != null) { 

      PhotoHandler myphotohandler = new PhotoHandler(); 

      ShutterCallback shutter = new ShutterCallback() { 
       public void onShutter() { 
        myCamera.stopPreview(); 
       } 
      }; 

      myCamera.takePicture(shutter, null, null, myphotohandler); 

     } 
+0

謝謝!這不會在任何其他設備上造成任何奇怪的行爲?我擔心它會,因爲預覽應該已經停止。 – 2015-06-24 13:47:36

+0

@MartinDevillers我已經認識到這個解決方案是偶然錯誤的原因。我認爲在極少數情況下(我的設備約爲1​​0分之一)快門回調在jpeg回調開始之前完成。在快門回調中停止預覽,然後防止發生jpeg回調。所以我再次沒有解決HTC One X在調用takePicture時拒絕停止預覽的問題。 – bbarrett 2015-10-10 23:43:59