2012年9月10日月曜日

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

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

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

空実装のShutterCallbackを指定すると鳴るようになりました。 mCamera.autoFocus(new AutoFocusCallback() { @Override public void onAutoFocus(boolean success, Camera camera) { camera.takePicture(shutterCallback, null, pictureCallback); } }); private Camera.PictureCallback pictureCallback = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { // save picture } }; private Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() { @Override public void onShutter() { // NOP } };
GALAXY NEXUS SC-04D で試しましたが、端末依存とかあるのでしょうか。。。