2012-09-05 24 views
8

Estoy escribiendo una aplicación en Android 4.0 que reproducirá el tono de llamada actual cuando presione un botón.Cómo repetir/repetir el tono de llamada actual en Android desde una aplicación?

Pero en el tono de llamada solo se reproduce una vez. Necesito que repita por algunas veces.

Mi código actual:

Uri notifi = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
final Ringtone r = RingtoneManager.getRingtone(c, notifi); 
r.play(); 
+0

Uri notifi = RingtoneManager.getDefaultUri (RingtoneManager.TYPE_RINGTONE); tono final r = RingtoneManager.getRingtone (c, notifi); r.play(); – krrakesh16

Respuesta

14

Prueba este código que he utilizado esto antes y poder jugar tono continuamente hasta que detiene

try { 
    Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
    mMediaPlayer = new MediaPlayer(); 
    mMediaPlayer.setDataSource(this, alert); 
    final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
if (audioManager.getStreamVolume(AudioManager.STREAM_RING) != 0) { 
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_RING); 
mMediaPlayer.setLooping(true); 
mMediaPlayer.prepare(); 
mMediaPlayer.start(); 
} 
} catch(Exception e) { 
} 
+0

@ satya. Creo MediaPlayer en la clase de servicio, ya que quiero usar 'mediaPlayer.setDataSource (getApplicationContext(), uri);', muestra esta excepción: 'Exceptiom no administrado: java.io.IOException'. ¿Cómo puedo resolverlo? –

+0

@MinaDahesh ¿logró resolver este problema? – Sam

+0

@Sam. es muy viejo! No recuerdo por qué lo necesito. Te preguntaré, como lo encuentro. –

6

probado los códigos anteriores de piruleta y sólo esto funcionó para mí

//activating looping ringtone sound 
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
    player = MediaPlayer.create(this, notification); 
    player.setLooping(true); 
    player.start(); 
1

Puede hacer que un temporizador compruebe regularmente si el tono de llamada aún se está reproduciendo. Por ejemplo, cada segundo:

mRingtone.play(); 
mTimer = new Timer(); 
mTimer.scheduleAtFixedRate(new TimerTask() { 
    public void run() { 
     if (!mRingtone.isPlaying()) { 
      mRingtone.play(); 
     } 
    } 
}, 1000*1, 1000*1); 
Cuestiones relacionadas