我正在尝试实现在线灵修诗篇流媒体Android应用程序 . 我正在尝试使用Android SDK框架提供的 MediaPlayer
类直接从我的网站服务器传输这些音频文件 .
这是我的MediaPlaybackUtility.java的代码
public class MediaPlaybackUtility {
static boolean isMediaPlaying = false;
static MediaPlayer mMediaPlayer = new MediaPlayer();
static void playPauseBhajan(String fileURL) {
if(!mMediaPlayer.isPlaying()) {
try {
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(ONLINE_AUDIO_URL);
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
isMediaPlaying = true;
}
});
} catch (IOException e) {
// TODO: handle exception
}
} else {
mMediaPlayer.pause();
isMediaPlaying = false;
}
}
static void stopBhajan() {
mMediaPlayer.stop();
isMediaPlaying = false;
}
}
我在ONLINE_AUDIO_URL的地方输入了保存在我服务器上的音频文件的URL,但是当我使用 MediaPlayer
类时,我有一些奇怪的经历 . MediaPlayer类正在播放一些文件,而不播放其他文件,我无法理解问题所在 .
以下是上述代码正在播放的音频文件的链接,没有任何错误:
以下是MediaPlayer无法播放的链接:
然后我尝试将OnErrorListener设置为MediaPlayer,以便如果流式传输这些文件时出现错误,我可以将这些错误记录下来,因此我在 mMediaPlayer.prepareAsync();
之后添加了这些行,但是当我将URL更改为其中之一时MediaPlayer无法播放没有在Logcat中记录的错误 .
mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e("MEDIAPLAYER", "Can't play media.");
return false;
}
});
然后我把这些MP3文件转换成M4A格式,就像这个一样AreyDwarPalonm4a.m4a但又没有运气,而且MediaPlayer也没有从服务器上播放这个文件 .
我也搜索过网络和各处,但找不到与我的具体问题有关的任何内容 . 也许我在这里忽略了一些基本概念,因为我第一次使用MediaPlayer和音频文件但是主要令人困惑的部分是,它正在播放一些保存在服务器上而不是其他文件的文件 .
1 回答
我认为你应该在mMediaPlayer.prepareAsync()之前添加这个监听器