2012-06-05 2 views
19

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

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

ответ

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

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

Спасибо :)

+0

Wow !!!! Ты спас мой день Шрикань! Это сработало!! = D Большое спасибо! =) Еще один вопрос. Я использую Galaxy Tab 10.1, и звук, который он делает в моем приложении, - это не то же самое, что и приложение камеры по умолчанию в планшете. Как вы думаете, Samsumg, возможно, настроил звук для своего собственного приложения для камеры? – Tiago

+0

Да, может быть, но, к сожалению, я не очень уверен в этом. – Shrikant

+0

Добро пожаловать :) – Shrikant

17

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

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.

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

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

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

+0

Работал для меня. Спасибо @HOLLO – Ahsanwarsi

-1

Использование MediaPlayer() класс при съемке

Смежные вопросы