Java android上媒体播放器和异步播放aacp/shoutcast流存在奇怪的问题
我正在尝试为一家广播电台制作一个定制播放器,他们希望从mpeg移动到aac,以降低大部分移动用户的比特率。然而,当我开始项目时,我正在对mpeg流进行测试,当我将其更改为新的aac流时,我的播放器似乎锁定了一段时间,然后,当玩家试图在后台加载流时,android会杀死UI线程。我确实收到了一些关于它无法播放的初始错误,但是在应用程序被杀死30秒后,我得到了一个孤立的异步播放器,它的粘性通知在后台重新生成,流开始播放 logcat输出在崩溃时显示这些行 I/dalvikvm﹕ threadid=3:对信号作出反应 I/dalvikvm﹕ 将堆栈跟踪写入“/data/anr/traces.txt”A/libc﹕ 0x000008eb代码=0处的致命信号6 SIGABRT,线程32258 我看到孤立异步任务的粘性,当我单击它以重新获得音频焦点时,它正在播放音频,但主应用程序/用户界面线程显然已完全重置 生成异步任务的代码如下所示:Java android上媒体播放器和异步播放aacp/shoutcast流存在奇怪的问题,java,android,aac,Java,Android,Aac,我正在尝试为一家广播电台制作一个定制播放器,他们希望从mpeg移动到aac,以降低大部分移动用户的比特率。然而,当我开始项目时,我正在对mpeg流进行测试,当我将其更改为新的aac流时,我的播放器似乎锁定了一段时间,然后,当玩家试图在后台加载流时,android会杀死UI线程。我确实收到了一些关于它无法播放的初始错误,但是在应用程序被杀死30秒后,我得到了一个孤立的异步播放器,它的粘性通知在后台重新生成,流开始播放 logcat输出在崩溃时显示这些行 I/dalvikvm﹕ threadid=3
private class PlayAsync extends AsyncTask<String, Void, Boolean> {
private String url_to_play = "";
@Override
protected void onPreExecute() {
super.onPreExecute();
textView_info.setText("Buffering...");
}
@Override
protected Boolean doInBackground(String... params) {
url_to_play = params[0];
Bundle b = new Bundle();
b.putString("url", url_to_play);
Intent i = new Intent(MainActivity.this, MusicService.class);
i.putExtras(b);
try {
stopService(new Intent(MainActivity.this, MusicService.class));
} catch (Exception ex) {
//
}
startService(i);
return true;
}
@Override
protected void onPostExecute(Boolean result) {
isMuted = isMuted();
if (isMuted) {
textView_info.setText("Playing Muted!");
} else
textView_info.setText("Playing");
isBuffering = false;
}
@Override
protected void onProgressUpdate(Void... values) {
}
protected void onError(MusicService mp, int what, int extra) {
// The MediaPlayer has moved to the Error state, must be reset!
button_stop.performClick();
}
}