1

私はAndroidプログラミングの初心者で、URLからいくつかのmp3ファイルを呼び出すためにmp3アプリをプログラミングしたいので、Android開発者で「メディアプレーヤー」を表示するsetDataSourceと、URLを入れて正常に動作しますが、問題は.アクティビティの表示に時間がかかり、アプリがクラッシュすることがあります。これは私のコードの一部です:

    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 スレッド) で準備を呼び出しているため、アクティビティがブロックされています

代わりに、リモート ソースからロードするときに特別に開始するために 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 に答える