我是 android 编程的初学者,我想编写 mp3 应用程序以从 URL 调用一些 mp3 文件,所以当我在 android 开发人员中显示“媒体播放器”时,我将 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();
最佳答案
您的 Activity 正在阻塞,因为您正在主线程(UI 线程)上调用准备
相反,您可以使用 prepareAsynch 和 OnPreparedListener 在从远程源加载时专门启动:
代码:
try {
mp.setDataSource(file_url);
mp.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer player) {
player.start();
}
});
mp.prepareAsync();
关于java - 关于MediaPlayer.setDatasource(URL)的查询;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817536/