2012-06-05 16 views
19

Ich verwende die takePicture() Methode aus der Camera Klasse. Es nimmt das Bild, aber es macht keinen Ton! Mein Kunde möchte den standardmäßigen Klicksound von Android.Android: takePicture() macht keinen Ton

Ich habe andere Threads gesehen und es scheint, dass das Problem in der Deaktivierung des Sounds ist, nicht das Gegenteil! Warum macht meine App den Klick nicht?

Antwort

51

Ich hatte auch dieses Problem. Ich löste es durch folgenden Code: Die folgenden Zwecke verwendet wird Takepicture zu nennen:

clickButton.setOnClickListener(new View.OnClickListener() { 

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

Jetzt shutteerCallBack:

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

Jetzt was auch immer Sie nach Bild von der Kamera unter:

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

Dies wird Sound beim Klicken auf Capture-Taste.

Danke

+0

Wow !!!! Du hast meinen Tag gerettet Shrikant !! Es funktionierte!! = D Vielen Dank !! =) Nur noch eine Frage. Ich benutze das Galaxy Tab 10.1 und der Sound, den er in meiner App erzeugt, ist nicht der gleiche wie der der Standard-Kamera-App auf dem Tablet. Glaubst du, dass Samsumg den Sound für seine native Kameraanwendung angepasst hat? – Tiago

+0

Ja, vielleicht, aber ernsthaft, ich bin mir nicht sicher. – Shrikant

+0

Sie sind herzlich willkommen :) – Shrikant

17

:) Wenn Sie eine Kamera spielen, um den Standard-Android-Sound wollen, können Sie ihm einen leer Verschluss Rückruf geben.

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

mCamera.takePicture(shutterCallback , null, onPicTaken); 

Getestet auf HTC One SV und Samsung Galaxy Xcover 2.

Sie geben dem Rückruf einen leeren Rückruf Verschluss und dann spielt es die Standard-Sound. Wenn Sie takePicture mit einem Null ShutterCallback anrufen, gibt die Kamera keinen Ton wieder.

Die Antwort von Shrikant funktioniert, aber könnte sich unerwartet verhalten, da mgr.playSoundEffect(); nicht mit AudioManager.FLAG_PLAY_SOUND als the doc Staaten aufgerufen werden soll.

+0

Arbeitete für mich. Danke @HOLLO – Ahsanwarsi

-1

Verwenden Sie MediaPlayer() Klasse, wenn Sie Bild

Verwandte Themen