2010-03-02 12 views

Odpowiedz

9

Możesz użyć SoundPool

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

a następnie odtwarzać dźwięk

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

Check out http://developer.android.com/reference/android/media/SoundPool.html zrozumieć parametry.

Będziesz potrzebował pliku multimedialnego o nazwie camera_click.ogg w swoim projekcie na res/raw. Powinieneś być w stanie użyć dźwięku domyślnego Androida, który można uzyskać z projektu open source Android w następującej lokalizacji (frameworks/base/data/sounds/effects/camera_click.ogg), jeśli twój projekt jest licencjonowany na podstawie licencji Apache. Jeśli twój projekt nie jest objęty licencją Apache, nie mam pojęcia, czy możesz go użyć, czy nie. Nie jestem prawnikiem.

+0

Od docs „priorytetowej dziedzinie. Priorytetu dźwięku Obecnie nie ma żadnego wpływu Użyj wartość 1 dla przyszłej kompatybilności.”. – greg7gkb

+0

Licencja Apache jest bardzo permisywna; możesz użyć jego zasobów w dowolnym projekcie. Z drugiej strony można wyszukać dźwięk już dostępny na urządzeniu. –

19

Jeżeli plik systemowy jest tam, można go używać tak:

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

Dodaj na początku kodu: MediaPlayer _shootMP = null; – Derzu

+2

@Derzu: '_sootMP' w moim przypadku był członkiem klasy aktywności kamery. Nie ma potrzeby, aby odtwarzać go dla każdego przechwytywania. –

+0

W twoim przypadku jest świetny, ale czytelnicy wciąż muszą wiedzieć, co to jest. –

45

Można użyć klasy MediaActionSound (dostępnym API 16). Na przykład:

MediaActionSound sound = new MediaActionSound(); 
sound.play(MediaActionSound.SHUTTER_CLICK); 
+0

Nie ma woluminu dla tej metody? Rozbrzmiewa dźwięk migawki przy pełnej głośności, bez względu na to, jaką głośność ustawiono na urządzeniu. – Hashman

Powiązane problemy