2012-09-05 30 views
8

Tôi đang viết một ứng dụng trên Android 4.0 sẽ phát nhạc chuông hiện tại khi tôi nhấn một nút.Làm thế nào để lặp/lặp lại nhạc chuông hiện tại trong Android từ một ứng dụng?

Nhưng trong nhạc chuông chỉ được phát một lần. Tôi cần nó lặp lại vài lần.

mã hiện tại của tôi:

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

Uri notifi = RingtoneManager.getDefaultUri (RingtoneManager.TYPE_RINGTONE); Nhạc chuông cuối cùng r = RingtoneManager.getRingtone (c, notifi); r.play(); – krrakesh16

Trả lời

14

Hãy thử mã này tôi đã sử dụng này trước và có thể chơi nhạc chuông liên tục cho đến khi bạn dừng lại

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 tạo MediaPlayer trong lớp Dịch vụ, vì tôi muốn sử dụng 'mediaPlayer.setDataSource (getApplicationContext(), uri);', nó cho thấy ngoại lệ này: 'Unhandled Exceptiom: java.io.IOException'. Làm thế nào tôi có thể giải quyết nó? –

+0

@MinaDahesh bạn đã quản lý để giải quyết vấn đề này? – Sam

+0

@Sam. nó quá cũ! tôi không nhớ tại sao tôi cần nó. tôi sẽ hỏi bạn, như tôi tìm thấy nó. –

6

thử các mã trên vào kẹo và chỉ này làm việc cho tôi

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

Bạn có thể có bộ đếm thời gian thường xuyên kiểm tra xem nhạc chuông vẫn đang phát. Ví dụ: mỗi giây:

mRingtone.play(); 
mTimer = new Timer(); 
mTimer.scheduleAtFixedRate(new TimerTask() { 
    public void run() { 
     if (!mRingtone.isPlaying()) { 
      mRingtone.play(); 
     } 
    } 
}, 1000*1, 1000*1); 
Các vấn đề liên quan