20

我正在使用课堂上的takePicture()方法Camera。它拍了照片,但它没有声音!我的客户想要 Android 发出的默认点击声音。

我看过其他线程,似乎问题在于禁用声音,而不是相反!为什么我的应用程序没有发出点击声?

4

2 回答 2

52

我也有这个问题。我通过使用以下代码解决了它:以下用于调用takePicture:

clickButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(final View view) {
                mCamera.takePicture(shutterCallback, null, onPicTaken);
            }
        });

现在ShutterCallBack:

private final ShutterCallback shutterCallback = new ShutterCallback() {
        public void onShutter() {
            AudioManager mgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            mgr.playSoundEffect(AudioManager.FLAG_PLAY_SOUND);
        }
    };

现在从相机拍照后做任何事情:

     /**
     * This will be called after taking picture from camera.
     */
    final transient private PictureCallback onPicTaken = new PictureCallback() {
        /**
         * After taking picture, onPictureTaken() will be called where image
         * will be saved.
         * 
         */
        @Override
        public void onPictureTaken(final byte[] data, final Camera camera) {
         }

这将在单击捕获按钮时播放声音。

谢谢 :)

于 2012-06-05T05:02:05.120 回答
19

如果你想让相机播放默认的安卓声音,你必须给它一个的快门回调。

ShutterCallback shutterCallback = new ShutterCallback() {
    @Override
    public void onShutter() { 
        /* Empty Callbacks play a sound! */
    }
};

mCamera.takePicture(shutterCallback , null, onPicTaken);

在 HTC One SV 和三星 Galaxy XCover 2 上测试。

你给回调一个空的快门回调,然后它播放默认声音。

如果您takePicture使用 null调用,ShutterCallback相机将不会播放任何声音。

Shrikant 的答案是有效的,但可能会出现意想不到的行为,因为mgr.playSoundEffect();它不打算AudioManager.FLAG_PLAY_SOUND文档所述的那样被调用。

于 2014-09-24T14:16:33.413 回答