【发布时间】:2014-10-02 02:01:43
【问题描述】:
我正在尝试使用从我的 api 获得的 json 中的 url 播放 mp3。但是当我点击播放音乐时,它无法播放并出现错误:(我尝试了越来越多但....零。请帮助。
这是我的源代码:
public void playRadioTrack(final RadioTrack radio) {
new AsyncTask<Void, Integer, Void>() {
private String maxDurationText;
protected void onPreExecute() {
runOnUiThread(new Runnable() {
@Override
public void run() {
findViewById(R.id.imgButtonPlay).setVisibility(View.GONE);
findViewById(R.id.progressLoadingMedia).setVisibility(View.VISIBLE);
//((TextView) findViewById(R.id.txtRadioName)).setText(radio.getName());
((TextView) findViewById(R.id.txtRadioName)).setText("Test thoi ma");
}
});
};
@Override
protected Void doInBackground(Void... params) {
if (mPlayer == null) {
Uri uri = Uri.parse(radio.getAudioUrl());
MediaPlayer mPlayer = MediaPlayer.create(ScreenHomeActivity.this, uri);
}
mPlayer.stop();
mPlayer.reset();
System.out.println(">>>> BUG >>>>" + radio.getAudioUrl());
Uri uri = Uri.parse("http://admega.vn/anhsai.mp3");
MediaPlayer mPlayer = MediaPlayer.create(ScreenHomeActivity.this, uri);
mPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
publishProgress(mp.getDuration(), mp.getCurrentPosition(), percent);
}
});
mPlayer.start();
return null;
}
protected void onProgressUpdate(Integer... values) {
((SeekBar) findViewById(R.id.seekBar)).setMax(values[0]);
((SeekBar) findViewById(R.id.seekBar)).setProgress(values[1]);
((SeekBar) findViewById(R.id.seekBar)).setSecondaryProgress(values[2] * values[0] / 100);
int seconds = (int) (values[1] / 1000) % 60;
int minutes = (int) ((values[1] / (1000 * 60)) % 60);
((TextView) findViewById(R.id.txtProgress)).setText(minutes + ":" + seconds);
((TextView) findViewById(R.id.txtProgress)).setText("");
};
protected void onPostExecute(Void result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
findViewById(R.id.imgButtonPlay).setVisibility(View.VISIBLE);
findViewById(R.id.progressLoadingMedia).setVisibility(View.GONE);
}
});
};
}.execute();
}
如你所见。我的播放器总是返回 null 并出现错误,如下图所示。 图片在这里: http://i.stack.imgur.com/Uwsmx.png
我认为mp3文件有问题,但不是,我换了新的mp3,还是一样。
【问题讨论】:
-
为什么要在 AsyncTask 中创建 MediaPlayer?
-
仅供参考:onPostExecute 已经在 UI 线程上运行。无需明确指定。
标签: android media-player