2012-09-05 27 views
8

我在Android 4.0上編寫應用程序,當我按下按鈕時它將播放當前的鈴聲。如何從應用程序中循環/重複Android中的當前鈴聲?

但是在鈴聲中只播放了一次。我需要重複幾次。

我當前的代碼:

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

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

回答

14

試試這個代碼我之前並能夠連續播放鈴聲都用這個,直到你停止

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.I在Service類中創建MediaPlayer,因爲我想使用'mediaPlayer.setDataSource(getApplicationContext(),uri);',它顯示此異常:'未處理的Exceptiom:java.io.IOException'。我該如何解決? –

+0

@MinaDahesh你設法解決這個問題嗎? – Sam

+0

@Sam。它太舊了!我不記得我爲什麼需要它。我會問你,因爲我找到了。 –

6

試戴棒棒糖上面的代碼也只有這個工作對我來說

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

您可以定期檢查鈴聲是否仍在播放。例如,每秒鐘:

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