android mediaplayer永远在ICS上循环播放

前端之家收集整理的这篇文章主要介绍了android mediaplayer永远在ICS上循环播放前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想播放一个通知声音,我的问题是声音永远循环,它应该只响一次.

我尝试了两种方法

  1. notification.sound = Uri.parse("content://media/internal/audio/media/38");

  1. mMediaPlayer = new MediaPlayer();
  2. mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
  3. mMediaPlayer.setDataSource(this,Uri.parse("content://media/internal/audio/media/38"));
  4. mMediaPlayer.setLooping(false);
  5. mMediaPlayer.prepare();
  6. mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {
  7. @Override
  8. public void onPrepared(MediaPlayer mp) {
  9. Log.v(Utils.TAG,"onprepared");
  10. mp.start();
  11. }
  12. });
  13.  
  14. mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
  15. @Override
  16. public void onCompletion(MediaPlayer mp) {
  17. Log.v(Utils.TAG,"end,we should release");
  18. mp.stop();
  19. mp.release();
  20. }
  21. });

在第二种情况下,我从未看到跟踪“结束,我们应该释放”,音频一遍又一遍地播放.

任何的想法?

非常感谢你

更新:

我尝试了两种设备:

>它永远在ICS 4.0.4的Galaxy Nexus上循环
>它适用于HTC Hero 2.2.1

解决方法

试试这个:
  1. try {
  2. mp.setDataSource(uri.toString());
  3. mp.setAudioStreamType(AudioManager.STREAM_ALARM);
  4. mp.prepare();
  5. mp.start();
  6. mp.setOnSeekCompleteListener(new OnSeekCompleteListener() {
  7. public void onSeekComplete(MediaPlayer mp) {
  8. mp.stop();
  9. mp.release();
  10. }
  11. });
  12. } catch (Exception e) {
  13. e.printStackTrace();
  14. }

猜你在找的Android相关文章