2010-03-02 7 views

Répondre

9

Vous pouvez utiliser SOUNDPOOL

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

puis jouer le son

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

Découvrez http://developer.android.com/reference/android/media/SoundPool.html de comprendre les paramètres.

Vous aurez besoin d'un fichier multimédia appelé camera_click.ogg dans votre projet sur res/raw. Vous devriez être en mesure d'utiliser le son par défaut Android qui peut être obtenu à partir du projet open source Android à l'emplacement suivant (frameworks/base/données/sons/effets/camera_click.ogg) si votre projet est sous licence Apache. Si votre projet n'est pas sous licence Apache, je ne sais pas si vous pouvez l'utiliser ou non. Je ne suis pas avocat.

+0

De la docs: "champ prioritaire: la priorité du son n'a actuellement aucun effet.Utilisez la valeur 1 pour une compatibilité future." – greg7gkb

+0

La licence Apache est très permissive; vous pouvez utiliser ses ressources dans n'importe quel projet. D'autre part, il est possible de rechercher le son déjà disponible sur l'appareil. –

19

Si le fichier système est là, vous pouvez l'utiliser comme ceci:

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

Ajouter au début du code: MediaPlayer _shootMP = null; – Derzu

+2

@Derzu: '_sootMP' dans mon cas était un membre de la classe de l'activité de la caméra. Il n'est pas nécessaire de le recréer pour chaque capture. –

+0

Dans votre cas c'est génial, mais les lecteurs ont encore besoin de savoir ce que c'est. –

45

Vous pouvez utiliser la classe MediaActionSound (disponible à partir de l'API 16). Par exemple:

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

Il n'y a pas de volume pour cette méthode? Cela fait exploser le son de l'obturateur à plein volume, quel que soit le volume réglé sur l'appareil. – Hashman