2011-01-31 10 views
18

Estoy tratando de agregar unos pocos sonidos simples (beep, boop, click, etc) a una aplicación de Android, por lo que me preguntaba si hay sonidos incorporados en el sistema operativo Android o SDK que podrían ser utilizado. Si es así, ¿cómo podrían acceder? Mis únicas conjeturas han sido en algún lugar de las clases de MediaStore o Soundpool ... Soy bastante nuevo, por lo que cualquier ayuda/consejo que puedas ofrecer sería muy apreciada. Gracias.¿Hay sonidos incorporados/predeterminados que se puedan utilizar en una aplicación?

Respuesta

20

Puede reproducir el tono de llamada predeterminado con:

MediaPlayer player = MediaPlayer.create(this, 
    Settings.System.DEFAULT_RINGTONE_URI); 
player.start(); 

Puede reemplazar DEFAULT_RINGTONE_URI con DEFAULT_NOTIFICATION_URI o DEFAULT_ALARM_ALERT_URI para los demás sonidos predeterminados.

+1

android.provider.Settings.System – usman

+1

más completa de error de la muestra withh manejo de aquí http://stackoverflow.com/questions/10335057/play-notification-default-sound-only-android –

1

1- La ayuda en crear indica que no debemos llamar a prepare después de crear, así que eliminé la línea de código de preparación.

2- Esto funciona bien en el dispositivo, pero se está cayendo en el emulador ???

3- Cualquier otro sonido que no sea alarma, notificación y tono de llamada ??

+0

me quita el player.prepare () línea de mi respuesta cuando revisé la documentación y usted estaba en lo correcto. No estoy seguro de por qué se cuelga el emulador, quizás no tiene ningún archivo de sonido para jugar? ¿Puedes proporcionar la salida 'logcat' del error/crash? No creo que haya ningún otro sonido predeterminado del sistema aparte del 3 proporcionado. –

+0

Tu eres wright. En el emulador, no hay sonido disponible para elegir cuando entramos en la configuración -> Sonido -> Tono de notificación –

8

Aquí hay una forma de generar un pitido.

Crear un archivo resouce crudo con .rtttl extensión y poner "c5: d = 4, o = 5, b = 250: C5" en ella (sin comillas)

A continuación, agregue este código:

protected MediaPlayer _mediaPlayer; 

public void playFromResource(int resId) 
    { 
    if (_mediaPlayer != null) 
     { 
     // _mediaPlayer.stop();  freeze on some emulator snapshot 
     // _mediaPlayer.release(); 
     _mediaPlayer.reset();  // reset stops and release on any state of the player 
     } 
    _mediaPlayer = MediaPlayer.create(this, resId); 
    _mediaPlayer.start(); 
    } 

Luego llame a playFromResource y pásele el ID del recurso si su recurso rtttl está sin procesar.

+1

¡Gracias por informarme sobre RTTTL! :-) – Abbafei

Cuestiones relacionadas