Android:takePicture()没有声音

Tia*_*ago 20 camera android default

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

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

Shr*_*ant 52

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

clickButton.setOnClickListener(new View.OnClickListener() {

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

现在shutteerCallBack:

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

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

     /**
     * 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) {
         }
Run Code Online (Sandbox Code Playgroud)

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

谢谢 :)


H0L*_*LL0 17

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

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

mCamera.takePicture(shutterCallback , null, onPicTaken);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Shrikant的答案正在发挥作用,但可能出乎意料地表现出来,因为mgr.playSoundEffect();不打算AudioManager.FLAG_PLAY_SOUND医生那样调用.