2011-10-27 20 views
12

Quiero conectar el sonido por defecto del sistema operativo Android (por ejemplo, el sonido que escucha cuando hace mucho tiempo hace clic en el botón Inicio y selecciona la aplicación anterior para comenzar) con el clic de mi botón. Sé cómo reproducir sonidos a través de MediaPlayer, pero no sé dónde buscar este sonido predeterminado. Tenía que estar en algunos recursos predeterminados, pero no pude encontrarlo.¿Cómo se reproduce el sonido TICK predeterminado?

MediaPlayer mp = MediaPlayer.create(getBaseContext(), sound); 
mp.setLooping(false); 
mp.start(); 

Cualquiera puede ayudar?

PS. este sonido se activará dentro del método OnClick.
PPS. Sé que puedo user/raw dir, pero no creo que sea necesario. No quiere decir que es mejor reproducir este tic sonido preparado para el teléfono del usuario.

Respuesta

1

NOTA: Esta es una respuesta bastante antigua. Verifique la respuesta de Roberto Tyley a continuación.

creo que el sonido que está buscando es y está en - /system/media/audio/ui/KeypressStandard.ogg

Creo que se puede dar esa ruta de acceso al SetDataSource API del reproductor multimedia. Pero no estoy seguro de si tendrá el mismo nombre en todos los teléfonos Android.

Puede haber una mejor forma de consulta para el tecleo de sonido por defecto ..

+1

Sería mejor si copiara ese archivo en su propio proyecto. Ese archivo no es parte del SDK de Android. No tengo conocimiento de una forma en el SDK para solicitar la reproducción de ese sonido de clic. – CommonsWare

+1

Es cierto, ya que no hay garuntee que el OEM retendrá el sonido de clic de la fuente de Android. ¿Pero es legal para mí copiar el sonido de clic de la fuente de Android en mi propio proyecto? – bluefalcon

+0

Bueno, ahora mismo es difícil de responder, ya que android.git.kernel.org sigue siendo un desastre. Pero, si el archivo es una parte del Proyecto de Código Abierto de Android, debe tener licencia bajo Apache License 2.0, al igual que el resto del código y los activos. – CommonsWare

53

Puede reproducir sonido 'tick' el valor por defecto de Android utilizando el método view.playSoundEffect() en cualquier caso - por sorprendente que parezca, todos los puntos de vista pueden jugar una selección de 'sistema' suena:

view.playSoundEffect(SoundEffectConstants.CLICK); 

Ésta es probablemente la respuesta más sencilla a su problema :)

+0

Esto funciona bien en ICS. –

+1

Por alguna razón, esto dejó de funcionar. ¿Alguna pista de lo que podría ser el problema? Por favor, eche un vistazo a mi código: 'out.setOnTouchListener (new View.OnTouchListener() {public boolean onTouch (Ver v, evento MotionEvent) {out.playSoundEffect (SoundEffectConstants.CLICK); ...}}}' ¡¡¡Gracias !! –

+4

Resuelto al agregar 'android: soundEffectsEnabled =" true "' en el diseño. ¡Gracias! –

5

respuesta de Roberto Tyley es correcta.

Puede reproducir un sonido de todas las vistas con sólo llamar de esta manera:

Button01.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       v.playSoundEffect(SoundEffectConstants.CLICK); 
      } 
     }); 

Ten en cuenta que el sonido no se reproducirá si los sonidos táctiles están desactivados de forma predeterminada. Esto se configura en las preferencias generales de sonido del dispositivo (Configuraciones -> Sonido -> Audible o en un sistema operativo más nuevo: Opciones> Sonido> Toque)

Además, si se establece esta configuración, la mayoría de los eventos de clic activarán el sonido de clic ¡de todas formas!

7

Si desea controlar el volumen del sonido, utilice el servicio del sistema AudioManager. Además, esto puede usarse desde un Servicio si no tiene una vista a la mano.

// get the AudioManager once onCreate or similar 
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

... 
// Play a System Sound 
audioManager.playSoundEffect(SoundEffectConstants.CLICK); 

// OR at 50% Volume 
audioManager.playSoundEffect(SoundEffectConstants.CLICK, 0.5F); 

Si usted está en Google Glass puede utilizar los com.google.android.glass.media.Sounds constantes

audioManager.playSoundEffect(Sounds.TAP); 

los siguientes están incluidos en Sonidos

No permitido, ERROR, éxito, TAP, seleccionado, DESPEDIDO

1

Puede usar el tic, el bip o cualquier tipo de sonido incorporado por Tone Generator

ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100); 
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); 
Cuestiones relacionadas