+-

我正在开发一个简单的应用程序并使用MediaPlayer在1个活动中播放一些背景噪音.我正在阅读MediaPlayer,我不确定是否要实现OnPreparedListener来触发start()方法.每种方法的优缺点是什么?
方法1:
mediaPlayer = MediaPlayer.create(context, R.raw.sound);
mediaPlayer.setLooping(true);
mediaPlayer.start();
方法2:
mediaPlayer = MediaPlayer.create(context, R.raw.sound);
mediaPlayer.setLooping(true);
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
最佳答案
根据文档,当您播放本地可用资源时,调用start()是有效的,MediaPlayer不需要为此获取数据并处理它以进行播放.例如,从原始文件夹播放音频资源.
如果您尝试从远程源播放资源,则更好的做法是使用OnPreparedListener(),因为它可能涉及获取和解码媒体数据.
因此,如果您确定知道您的资源是本地可用且长度很短,请选择方法1.否则方法2将是合适的.
理想情况下,我更喜欢这个.
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mediaPlayer.prepareAsync();
对于我来说,MediaPlayer一直很棘手.所以,我建议你从developer docs开始.仔细阅读,了解状态图.我相信它会帮助你解决许多你尚未遇到的问题.
点击查看更多相关文章
转载注明原文:Android MediaPlayer OnPreparedListener - 乐贴网