Подтвердить что ты не робот

Android: takePicture() не делает звук

Я использую метод takePicture() из класса Camera. Он снимает картинку, но звук не звучит! Мой клиент хочет использовать звук по умолчанию, который делает Android.

Я видел другие темы, и кажется, что проблема заключается в отключении звука, а не наоборот! Почему мое приложение не создает звук щелчка?

4b9b3361

Ответ 1

У меня также была эта проблема. Я решил это, используя следующий код: Для вызова 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) {
         }

Это приведет к воспроизведению звука при нажатии кнопки захвата.

Спасибо:)

Ответ 2

Если вы хотите, чтобы камера воспроизводила звук по умолчанию для Android, вы должны дать ему пустой обратный вызов затвора.

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

mCamera.takePicture(shutterCallback , null, onPicTaken);

Протестировано на HTC One SV и Samsung Galaxy XCover 2.

Вы вызываете обратный вызов пустым обратным вызовом затвора, а затем воспроизводите звук по умолчанию.

Если вы вызываете takePicture с нулевым ShutterCallback, камера не будет воспроизводить звук.

Ответ Shrikant работает, но может вести себя неожиданно, поскольку mgr.playSoundEffect(); не предназначен для вызова с AudioManager.FLAG_PLAY_SOUND как doc состояния.

Ответ 3

Используйте MediaPlayer() класс при съемке