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;
    }
}

}

我想要做的是在用户按下“播放”按钮时显示progressBar(cicling),并且当媒体播放器开始播放时我需要它消失。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();
   }
  });

而且您必须覆盖媒体播放器的 Prepared 侦听器,以便您可以像这样停止其中的进度条,

Player.setOnPreparedListener(new OnPreparedListener() {

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

            }
        });

通过这个,您可以实现显示进度,直到您的 Mediaplayer 开始播放文件。

于 2012-05-07T04:36:54.513 回答
1

回来最后将此问题标记为已解决,因此我将之前编辑的内容复制到了我的问题中。

我让它工作。我确实像这样启动播放器: player.prepare(); 代替 player.prepareAsync(); 所以进度条显示了一个视图毫秒。

于 2015-10-15T17:37:01.120 回答
0

在此行之后添加代码以隐藏您的 ProgressBar:

player.start();

并且也在你的 catch 块中。一旦玩家正在玩,或者没有玩,这应该让它消失。

如果您现在添加用于显示 ProgressBar 的代码,我也可以帮助您如何隐藏它。

于 2012-05-06T16:45:42.627 回答