2012-09-05 7 views
8

Sto scrivendo un'applicazione su Android 4.0 che riprodurrà la suoneria corrente quando premo un pulsante.Come eseguire il loop/ripetizione della suoneria corrente in Android da un'applicazione?

Ma nella suoneria viene riprodotta solo una volta. Ho bisogno che ripeta per alcune volte.

mio codice corrente:

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

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

risposta

14

Prova questo codice che ho usato questo prima e in grado di giocare Suoneria ininterrottamente fino all'arresto

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.Io creo MediaPlayer in classe Service, poiché desidero utilizzare 'mediaPlayer.setDataSource (getApplicationContext(), uri);', mostra questa eccezione: 'Eccezionale non gestita: java.io.IOException'. Come posso risolverlo? –

+0

@MinaDahesh sei riuscito a risolvere questo problema? – Sam

+0

@ Sam. è troppo vecchio! non ricordo perché ne ho bisogno. ti chiederò, come lo trovo. –

6

provato i codici di cui sopra sul lecca-lecca e solo questo ha funzionato per me

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

Puoi avere un timer per controllare regolarmente se la suoneria è ancora in riproduzione. Ad esempio, ogni secondo:

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