2010-03-02 14 views

Respuesta

9

Es posible que desee utilizar soundpool

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

y luego reproducir el sonido

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

Salida http://developer.android.com/reference/android/media/SoundPool.html para entender los parámetros.

Necesitará un archivo multimedia llamado camera_click.ogg en su proyecto en res/raw. Debería poder usar el sonido predeterminado de Android que puede obtenerse del proyecto de código abierto de Android en la siguiente ubicación (frameworks/base/data/sounds/effects/camera_click.ogg) si su proyecto tiene licencia bajo la licencia de Apache. Si su proyecto no tiene licencia bajo la licencia de Apache, no tengo idea de si puede usarlo o no. Yo no soy un abogado.

+0

De los documentos: "campo de prioridad: la prioridad del sonido. Actualmente no tiene ningún efecto. Use un valor de 1 para compatibilidad futura". – greg7gkb

+0

La licencia de Apache es muy permisiva; puedes usar sus recursos en cualquier proyecto. Por otro lado, es posible buscar el sonido ya disponible en el dispositivo. –

19

Si el archivo de sistema es ahí, se puede utilizar de esta manera:

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

Agregar al principio del código: MediaPlayer _shootMP = null; – Derzu

+2

@Derzu: '_sootMP' en mi caso era un miembro de la clase de la actividad de la cámara. No hay necesidad de volver a crearlo para cada captura. –

+0

En su caso es genial, pero los lectores aún necesitan saber de qué se trata. –

45

Usted puede utilizar la clase MediaActionSound (disponible de API 16). Por ejemplo:

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

No hay volumen para este método? Esto dispara el sonido del obturador a todo volumen, sin importar el volumen configurado en el dispositivo. – Hashman

Cuestiones relacionadas