我想播放通知声音,但我的问题是声音永远循环,而它应该只响一次。
我尝试过两种方法:
notification.sound = Uri.parse("content://media/internal/audio/media/38");
and
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();
}
});
在第二种情况下,我从未看到“结束,我们应该释放”的痕迹,音频一遍又一遍地播放。
任何想法?
非常感谢
UPDATE:
我尝试过两种设备:
- 它在配备 ICS 4.0.4 的 Galaxy Nexus 上永远循环
- 在 HTC Hero 2.2.1 上运行良好
有些声音带有“内置”循环,可以永远播放。这与将 MediaPlayer 设置为循环不同。如果您开始使用内置循环播放声音,它将永远不会结束。这些大多是铃声(而不是警报音或通知音)。您可以将 RingtoneManager 设置为仅返回通知音或闹钟音myringtonemanager.setType(RingtoneManager.TYPE_ALARM|RingtoneManager.TYPE_NOTIFICATION)
这将排除大多数循环声音,但不幸的是,这并不能保证在任何设备上都排除它们。:-(
因此,蒂亚戈·阿尔梅达的解决方案是一个很好的解决方法(我已经投票赞成),尽管它也会截断所有只有几个(并且没有无限)循环的声音。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)