2010-03-02 11 views
22

Ich möchte native Kamera Auslöser Tonclip auf Kamera Vorschau erfassen spielen. Ich beziehe mich auf den Soundclip, der gespielt wird, wenn takePicture() aufgerufen wird.
Wie könnte ich das? Kann mich jemand durch die Stufen gehen?Wie native Kamera Sound auf Android spielen

Antwort

9

Sie möchten Soundpool verwenden

SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_NOTIFICATION, 0); 
int shutterSound = soundPool.load(this, R.raw.camera_click, 0); 

und dann den Sound

soundPool.play(shutterSound, 1f, 1f, 0, 0, 1); 

Check out http://developer.android.com/reference/android/media/SoundPool.html zu verstehen, um die Parameter zu spielen.

Sie benötigen eine Mediendatei namens camera_click.ogg in Ihrem Projekt bei res/raw. Sie sollten in der Lage sein, den Android-Standardsound zu verwenden, der von dem Android-Open-Source-Projekt an folgendem Speicherort (frameworks/base/data/sounds/effects/camera_click.ogg) abgerufen werden kann, wenn Ihr Projekt unter der Apache-Lizenz lizenziert ist. Wenn Ihr Projekt nicht unter der Apache-Lizenz lizenziert ist, habe ich keine Ahnung, ob Sie es verwenden können oder nicht. Ich bin kein Anwalt.

+0

Aus dem Dokument: "Prioritätsfeld: die Priorität des Sounds. Derzeit hat keinen Effekt. Verwenden Sie einen Wert von 1 für die zukünftige Kompatibilität." – greg7gkb

+0

Apache-Lizenz ist sehr freizügig; Sie können ihre Ressourcen in jedem Projekt verwenden. Auf der anderen Seite ist es möglich, nach dem Ton zu suchen, der bereits auf dem Gerät verfügbar ist. –

19

Wenn die Systemdatei ist, können Sie es wie folgt verwenden:

public void shootSound() 
{ 
    AudioManager meng = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); 
    int volume = meng.getStreamVolume(AudioManager.STREAM_NOTIFICATION); 

    if (volume != 0) 
    { 
     if (_shootMP == null) 
      _shootMP = MediaPlayer.create(getContext(), Uri.parse("file:///system/media/audio/ui/camera_click.ogg")); 
     if (_shootMP != null) 
      _shootMP.start(); 
    } 
} 
+5

Fügen Sie am Anfang des Codes hinzu: MediaPlayer _shootMP = null; – Derzu

+2

@Derzu: '_sootMP' war in meinem Fall ein Mitglied der Kamera Aktivität. Es muss nicht für jede Aufnahme neu erstellt werden. –

+0

In Ihrem Fall ist großartig, aber Leser müssen immer noch wissen, was es ist. –

45

können Sie verwenden, um die MediaActionSound Klasse (erhältlich von API 16). Zum Beispiel:

+0

Es gibt kein Volumen für diese Methode? Dadurch wird der Auslöseton bei voller Lautstärke ausgelöst, unabhängig davon, welche Lautstärke am Gerät eingestellt ist. – Hashman

Verwandte Themen