我是android编程的初学者,我想编写mp3应用程序从URL调用一些mp3文件,所以当我在android开发人员中显示“Media Player”时,我将URL放在setDataSource
中,它是工作正常,但问题是Activity需要花费大量时间来显示它并且在有时应用程序中会崩溃。这是我的代码的一部分:
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();
答案 0 :(得分:1)
您的活动正在阻止,因为您正在主线程(UI线程)上调用prepare
相反,您可以使用prepareAsynch和OnPreparedListener在从远程源加载时特别启动:
代码:
try {
mp.setDataSource(file_url);
mp.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer player) {
player.start();
}
});
mp.prepareAsync();