2012-06-05 19 views
19

Używam metody takePicture() z klasy Camera. Wykonuje zdjęcie, ale nie wydaje dźwięku! Mój klient chce domyślnego dźwięku kliknięcia, który tworzy Android.Android: takePicture() nie produkuje dźwięku

Widziałem inne wątki i wydaje się, że problemem jest wyłączenie dźwięku, a nie odwrotnie! Dlaczego moja aplikacja nie wydaje dźwięku kliknięcia?

Odpowiedz

51

Też miałem ten problem. I rozwiązać go za pomocą następującego kodu: Poniżej nazywali takePicture:

clickButton.setOnClickListener(new View.OnClickListener() { 

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

Teraz shutteerCallBack:

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

Teraz Rób co po uwzględnieniu obraz z kamery:

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

Spowoduje to odtworzenie dźwięku po kliknięciu przycisku przechwytywania.

Dziękuję :)

+0

Wow !!!! Uratowałeś mi dzień Shrikant !! Zadziałało!! = D Dziękuję bardzo !! =) Jeszcze jedno pytanie. Używam Galaxy Tab 10.1, a dźwięk, który tworzy na mojej aplikacji, nie jest taki sam, jak domyślna aplikacja aparatu na tablecie. Czy myślisz, że Samsumg mógł dostosować dźwięk do swojej natywnej aplikacji do aparatu? – Tiago

+0

Tak, być może, ale poważnie mówiąc, nie jestem tego pewien. – Shrikant

+0

Serdecznie zapraszamy :) – Shrikant

17

Jeśli chcesz aparat do gry android domyślny dźwięk, trzeba dać mu pusty migawki zwrotnego.

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

mCamera.takePicture(shutterCallback , null, onPicTaken); 

Testowane na HTC One SV i Samsung Galaxy Xcover 2.

Dajesz zwrotnego pusty migawki zwrotnego, a następnie odtwarza dźwięk domyślny.

Jeśli zadzwonisz pod numer takePicture z wartością zerową ShutterCallback, aparat nie będzie odtwarzał żadnego dźwięku.

Odpowiedź Shrikant działa, ale może zachowywać się jak mgr.playSoundEffect(); nie ma być wywoływana z AudioManager.FLAG_PLAY_SOUND jak the doc stanach.

+0

Pracował dla mnie. Dzięki @HOLLO – Ahsanwarsi

-1

Użyj klasy MediaPlayer() podczas robienia zdjęcia

Powiązane problemy