我正在尝试实施在线灵修诗篇流媒体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类正在播放一些文件而不播放其他文件,我无法理解问题所在。
以下是上述代码正在播放的音频文件的链接,没有任何错误:
1。 testsong_20sec.mp3
2。 TheRadiance.m4a
3。 WaitingfortheEnd.m4a
以下是MediaPlayer无法播放的链接:
1。 ShapeofYou.mp3
2。 AreyDwalPalon.mp3
3。 KrishnaTheme.mp3
4。 BataoKahaMilegaShyam.mp3
然后我尝试将OnErrorListener设置为MediaPlayer,以便如果流式传输这些文件时出现错误,我可以将这些错误记录下来,因此我在mMediaPlayer.prepareAsync();
之后添加了这些行,但是当我更改了Logcat中记录了MediaPlayer无法播放的其中一个没有错误的URL。
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和音频文件,但同样令人困惑的部分是,它正在播放一些保存在服务器上而不是其他文件的文件。
答案 0 :(得分:0)
我认为你应该在mMediaPlayer.prepareAsync()之前添加这个监听器,如
mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e("MEDIAPLAYER", "Can't play media.");
return false;
}
});
mMediaPlayer.prepareAsync();