android mediaplayer永远在ICS上循环播放

我想播放一个通知声音,我的问题是声音永远循环,它应该只响一次.

我尝试了两种方法

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

mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mMediaPlayer.setDataSource(this,Uri.parse("content://media/internal/audio/media/38"));
mMediaPlayer.setLooping(false);
mMediaPlayer.prepare();
mMediaPlayer.setonPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        Log.v(Utils.TAG,"onprepared");
        mp.start();
    }
});

mMediaPlayer.setonCompletionListener(new OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        Log.v(Utils.TAG,"end,we should release");
        mp.stop();
        mp.release();
    }
});

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

任何的想法?

非常感谢你

更新:

我尝试了两种设备:

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

解决方法

试试这个:
try {
    mp.setDataSource(uri.toString());
    mp.setAudioStreamType(AudioManager.STREAM_ALARM);
    mp.prepare();
    mp.start();
    mp.setonSeekCompleteListener(new OnSeekCompleteListener() {
        public void onSeekComplete(MediaPlayer mp) {
            mp.stop();
            mp.release();
        }
    });
} catch (Exception e) {
    e.printstacktrace();
}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...