2012年9月10日月曜日

4.0(ICS)でCamera.takePicture呼び出し時にシャッター音が鳴らない?

4.0(ICS)で、Camera シャッター音が鳴らなくなりました。???

よくある実装サンプル。
  1. mCamera.autoFocus(new AutoFocusCallback() {  
  2.     @Override  
  3.     public void onAutoFocus(boolean success, Camera camera) {  
  4.             camera.takePicture(nullnull, pictureCallback);  
  5.     }  
  6. });  
  7.   
  8. private Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {  
  9.     @Override  
  10.     public void onPictureTaken(byte[] data, Camera camera) {  
  11.         // save picture   
  12.     }  
  13. };  
takePictureの第1引数のShutterCallbackをnull で呼び出してます。
4.0(ICS)以降では、nullにしているとシャッター音が鳴らなくなっているようです。

空実装のShutterCallbackを指定すると鳴るようになりました。
  1. mCamera.autoFocus(new AutoFocusCallback() {  
  2.     @Override  
  3.     public void onAutoFocus(boolean success, Camera camera) {  
  4.             camera.takePicture(shutterCallback, null, pictureCallback);  
  5.     }  
  6. });  
  7.   
  8. private Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {  
  9.     @Override  
  10.     public void onPictureTaken(byte[] data, Camera camera) {  
  11.         // save picture   
  12.     }  
  13. };  
  14.   
  15. private Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {  
  16.     @Override  
  17.     public void onShutter() {  
  18.         // NOP  
  19.     }  
  20. };  

GALAXY NEXUS SC-04D で試しましたが、端末依存とかあるのでしょうか。。。