关于MediaPlayer.setDatasource(URL)的查询;

时间:2013-02-11 17:31:46

标签: java android stream media-player

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

1 个答案:

答案 0 :(得分:1)

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

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

代码:

try {

     mp.setDataSource(file_url);

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

                player.start();
        }
     });
    mp.prepareAsync();