1

我是 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();
4

1 回答 1

1

您的活动正在阻塞,因为您正在主线程(UI 线程)上调用 prepare

相反,您可以使用 prepareAsynch 和 OnPreparedListener 在从远程源加载时专门启动:

代码 :

try {

     mp.setDataSource(file_url);

    mp.setOnPreparedListener(new OnPreparedListener() {
         public void onPrepared(MediaPlayer player) {

                player.start();
        }
     });
    mp.prepareAsync();
于 2013-02-11T17:57:02.523 回答