2

これは私のメインアクティビティのコードです:

private void initControls()
 {
  streamButton = (Button) findViewById(R.id.button_stream);
  streamButton.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View view)
   {
        loading = (ProgressBar) findViewById(R.id.progressBar1);
    Toast
    .makeText(
      MyActivity.this,
       "The following stream is about to start" + station,   
      Toast.LENGTH_LONG).show();
    player.playAudioFile(urlstring2);
    streamButton.setEnabled(false);
    notificate();
   }
  });
 }

そして、これがメディアプレイヤー自体を起動する魔女のコードです:

public class player extends MyMainActivity{

static MediaPlayer player;
private static final String TAG = player.class.getSimpleName();



public static void playAudioFile(String urlstring2) {


    player = new MediaPlayer();
    try {
        player.setDataSource(urlstring2);
        loading.setVisibility(View.VISIBLE);
        player.prepareAsync();
        //player.start();

    } catch (Throwable thr) {
        Log.e(TAG, "could not play audio", thr);
        loading.setVisibility(View.INVISIBLE);
    }
    player.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {
            player.start();
            loading.setVisibility(View.INVISIBLE);
        }
    });

}

public static void releasePlayer() {
    if (player != null) {
        // Player-Ressourcen freigeben
        player.release();
        player = null;
    }
}

}

私がやりたいことは、ユーザーが「再生」ボタンを押したときにプログレスバー (循環バー) を表示することであり、メディアプレーヤーの再生が開始されたときに消える必要があります。atm プレイヤーがプレイを開始した後にサークルを表示するだけで、消えることはありません...

編集:動作するようになりました。私は次のようにプレーヤーを開始しました: player.prepare(); player.prepareAsync(); の代わりに したがって、プログレスバーはミリ秒表示されました。

4

3 に答える 3

1

これを試してみてください。

このようにボタンをクリックしてプログレスバーを開始し、

 streamButton.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View view)
   { 
   ProgressDialog progressDialog=null;   
 progressDialog=ProgressDialog.show(context, "", "Playing..."); 
    Toast
    .makeText(
      MyActivity.this,
       "The following stream is about to start" + station,   
      Toast.LENGTH_LONG).show();
    player.playAudioFile(urlstring2);
    streamButton.setEnabled(false);
    notificate();
   }
  });

そして、次のように進行状況バーを停止できるように、メディア プレーヤーの on Prepared リスナーをオーバーライドする必要があります。

Player.setOnPreparedListener(new OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                    progressDialog.cancel();

            }
        });

これにより、Mediaplayer がファイルの再生を開始するまで進行状況を表示することができます。

于 2012-05-07T04:36:54.513 に答える
0

この行の後に、ProgressBar を非表示にするコードを追加します。

player.start();

また、キャッチブロックでも。プレイヤーがプレイしている、またはプレイに失敗すると、それは消えるはずです。

ProgressBar を表示するために使用しているコードを追加すると、それを非表示にする方法も手伝うことができます。

于 2012-05-06T16:45:42.627 に答える