Android:takePicture()没有声音

时间:2012-06-05 04:50:52

标签: android camera default

我正在使用takePicture()课程中的Camera方法。拍照,但它没有声音!我的客户想要Android制作的默认点击声。

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

2 个答案:

答案 0 :(得分:51)

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

clickButton.setOnClickListener(new View.OnClickListener() {

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

现在shutteerCallBack:

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) {
         }

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

谢谢:)

答案 1 :(得分:17)

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

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致电ShutterCallback,相机将无法播放任何声音。

Shrikant的答案正在发挥作用,但可能会出现意外情况,因为mgr.playSoundEffect();并非打算使用AudioManager.FLAG_PLAY_SOUND作为the doc州进行调用。