Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo jugar sonido de timbre / alarma en Android

He estado buscando en todas partes cómo tocar un sonido de timbre / alarma en Android.

Presiono un botón y quiero tocar un sonido de timbre / alarma. No pude encontrar una muestra fácil y directa. Sí, ya miré el código fuente del despertador … pero no es sencillo y no puedo compilarlo.

  • Aplicación de Android ClassNotFoundException, No se puede instanciar la aplicación
  • ¿Cómo puedo configurar un color diferente para el estado presionado del botón?
  • Transferencia de datos a través de un cable de conexión de audio a través de dos dispositivos Android
  • Android ¿qué está mal con openFileOutput?
  • Cómo cambiar el nombre de un archivo en sdcard con la aplicación de Android?
  • Se produjo un error en la transacción del encuadernador al colocar un mapa de bits dinámicamente en un widget.
  • No puedo hacer que esto funcione:

    Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(this, alert); final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) { player.setAudioStreamType(AudioManager.STREAM_ALARM); player.setLooping(true); player.prepare(); player.start(); } 

    Consigo este error:

     04-11 17:15:27.638: ERROR/MediaPlayerService(30): Couldn't open fd for content://settings/system/ringtone 

    Así que .. por favor, si alguien sabe cómo jugar un tono predeterminado / alarma me dejó saber.

    Prefiero no subir ningún archivo. Simplemente reproduzca un tono de llamada predeterminado.

  • Android apk - Cómo excluir un archivo .so de una dependencia de terceros utilizando gradle
  • Android: lee un archivo XML con HTTP GET
  • SpeechRecognizer con Google Search versión 3.6.14.1337016 no puede reconocer otro idioma de voz excepto el predeterminado
  • Redirect para Android WebView 302 - Honeycomb
  • Anidar las pestañas en Android 4 con la biblioteca de soporte (ActionBarSherlock)
  • Android View y ViewGroup
  • 11 Solutions collect form web for “Cómo jugar sonido de timbre / alarma en Android”

    Usted puede simplemente jugar un tono de llamada setted con esto:

     Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); 

    Si un usuario nunca ha configurado una alarma en su teléfono, TYPE_ALARM puede devolver null. Usted puede explicar esto con:

     Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); if(alert == null){ // alert is null, using backup alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // I can't see this ever being null (as always have a default notification) // but just incase if(alert == null) { // alert backup is null, using 2nd backup alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); } } 

    Esta es la manera que he hecho:

     Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); MediaPlayer mp = MediaPlayer.create(getApplicationContext(), notification); mp.start(); 

    Es similar a la manera de markov00, pero utiliza MediaPlayer en lugar de tono que evita la interrupción de otros sonidos, como la música, que ya podría estar jugando en segundo plano.

    Su ejemplo es básicamente lo que estoy usando. No funciona en el emulador, sin embargo, porque el emulador no tiene ningún tono de timbre por defecto, y el content://settings/system/ringtone no resuelve nada jugable. Funciona bien en mi teléfono real.

    Puede empujar un archivo MP3 en su carpeta / sdcard usando DDMS, reiniciar el emulador, abrir la aplicación Media, buscar en su archivo MP3, presionarla larga y seleccionar "Utilizar como tono de llamada del teléfono".

    ¡El error ha desaparecido!

    Editar: el mismo problema con los sonidos de notificación (por ejemplo, para SMS) resuelto mediante la aplicación Ringdroid

    Esto funciona bien:

     AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); MediaPlayer thePlayer = MediaPlayer.create(getApplicationContext(), RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); try { thePlayer.setVolume((float) (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) / 7.0)), (float) (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) / 7.0))); } catch (Exception e) { e.printStackTrace(); } thePlayer.start(); 

    Copiar un archivo de audio a la tarjeta sd del emulador y seleccionarlo a través de reproductor de medios como el tono predeterminado de hecho resolver el problema.

    Puede utilizar este código de ejemplo:

     Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); Ringtone ringtoneSound = RingtoneManager.getRingtone(getApplicationContext(), ringtoneUri) if (ringtoneSound != null) { ringtoneSound.play(); } 
     public class AlarmReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { //this will update the UI with message Reminder inst = Reminder.instance(); inst.setAlarmText(""); //this will sound the alarm tone //this will sound the alarm once, if you wish to //raise alarm in loop continuously then use MediaPlayer and setLooping(true) Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); if (alarmUri == null) { alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); } Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri); ringtone.play(); //this will send a notification message ComponentName comp = new ComponentName(context.getPackageName(), AlarmService.class.getName()); startWakefulService(context, (intent.setComponent(comp))); setResultCode(Activity.RESULT_OK); } } 

    Para futuros googleadores: use RingtoneManager.getActualDefaultRingtoneUri() lugar de RingtoneManager.getDefaultUri() . Según su nombre, devolvería el uri real, así que usted puede utilizarlo libremente. De la documentación de getActualDefaultRingtoneUri() :

    Obtiene el Uri del sonido predeterminado actual. Esto dará el Uri de sonido real , en lugar de usar esto, la mayoría de los clientes pueden usar DEFAULT_RINGTONE_URI.

    Mientras tanto getDefaultUri() dice esto:

    Devuelve el Uri para el tono predeterminado de un tipo particular. En lugar de devolver el Uri de sonido del ringtone real, esto devolverá el Uri simbólico que se resuelve al sonido real cuando se reproduce.

    He aquí un ejemplo de código:

     Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), notification); mediaPlayer.start(); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.