- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个简单的应用程序,并使用 MediaPlayer 在 1 个 Activity 中播放一些背景噪音。我正在阅读 MediaPlayer,但不确定是否要实现 OnPreparedListener 来触发 start() 方法。每种方法的优缺点是什么?
方法一:
mediaPlayer = MediaPlayer.create(context, R.raw.sound);
mediaPlayer.setLooping(true);
mediaPlayer.start();
方法二:
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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827190/
我正在开发一个简单的应用程序,并使用 MediaPlayer 在 1 个 Activity 中播放一些背景噪音。我正在阅读 MediaPlayer,但不确定是否要实现 OnPreparedListen
我的 Activity 中有播放按钮和视频 View 。在 xml 中,我将按钮设为不可见。在 java 代码中,我试图让它可见。 在视频 View 的 OnPreparedListener 方法中,
我想在用户等待 VideoView 开始播放 HLS 时向他展示一些 ProgressDialog。我尝试为此使用 OnPreparedListener,但他提前触发(播放器下载 m3u8 文件后,而
我正在使用 VideoView 播放视频,起初我将它放在一个 Activity 中并且工作得非常好,但是由于我试图将功能放在 API 中,所以我必须将视频放在 fragment 中。我这样做并编写了一
我是一名优秀的程序员,十分优秀!