我是安卓编程的初学者,我想编程mp3应用程序从URL调用一些mp3文件,所以当我在安卓开发人员中显示"媒体播放器"时,我将URL放在setDataSource
中,它工作正常,但问题是"活动"需要很多时间来显示它,有时应用程序会崩溃。这是我代码的一部分:
file_url = Mp3_Linkes[num];
//Set Source
try {
mp.setDataSource(file_url);
} catch (Exception e) {
Toast.makeText(this, "Source Error !!", Toast.LENGTH_LONG).show();
}
//Prepare
try {
mp.prepare();
}catch(Exception e)
{
Toast.makeText(this, "Prepare Error !!", Toast.LENGTH_LONG).show();
}
//Start
mp.start();
您的活动被阻止,因为您正在主线程(UI线程)上调用prepare
相反,当从远程源加载时,您可以使用prepareSynch和OnPreparedListener进行特殊启动:
代码:
try {
mp.setDataSource(file_url);
mp.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer player) {
player.start();
}
});
mp.prepareAsync();