Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在mediaplayer准备就绪之前无法显示微调器_Android_Media Player_Android Spinner_Android Alertdialog - Fatal编程技术网

Android 在mediaplayer准备就绪之前无法显示微调器

Android 在mediaplayer准备就绪之前无法显示微调器,android,media-player,android-spinner,android-alertdialog,Android,Media Player,Android Spinner,Android Alertdialog,我尝试了各种方法,但都没有解决我的问题。希望这里有人能帮我。 简单的要求是我想显示一个微调器,直到媒体播放器窗口显示。听起来很容易,但事实并非如此 我正在调用我的mediaplayer类,单击alertDialog的“侦听”。这是: alertBox.setCancelable(false) .setNegativeButton("Listen", new DialogInterface.OnClickListener(){ public void onClick(DialogInte

我尝试了各种方法,但都没有解决我的问题。希望这里有人能帮我。 简单的要求是我想显示一个微调器,直到媒体播放器窗口显示。听起来很容易,但事实并非如此

我正在调用我的mediaplayer类,单击alertDialog的“侦听”。这是:

alertBox.setCancelable(false)
  .setNegativeButton("Listen", new DialogInterface.OnClickListener(){
   public void onClick(DialogInterface dialog,int id){
dialog.dismiss();
emp = new EasyMediaPlayer(mp3PopupLayout,buttonPlayPause,seekBarProgress,tv_mp3,downloadURL);
emp.startPlayingMP3();          
}
}).show();
startPlaying函数调用chooseToStart(true),该函数反过来运行媒体播放器。这一类是:

public class EasyMediaPlayer implements OnClickListener, OnTouchListener, OnCompletionListener, OnBufferingUpdateListener{  
EasyMediaPlayer(View mp3PopupLayout,ImageView buttonPlayPause,SeekBar seekBarProgress,TextView tv_mp3, String MP3URL){
        this.mp3PopupLayout = mp3PopupLayout;
        this.buttonPlayPause = buttonPlayPause;
        this.seekBarProgress = seekBarProgress;
        this.tv_mp3 = tv_mp3;
        this.MP3URL = MP3URL;
        seekBarProgress.setOnTouchListener(this);
        buttonPlayPause.setOnClickListener(this);
    }

    public void startPlayingMP3(){
        mediaFileLengthInMilliseconds = 1;
        tv_mp3.setText("");
        buttonPlayPause.setImageResource(R.drawable.button_play);
        buttonPlayPause.setVisibility(View.GONE);
        seekBarProgress.setProgress(0);
        seekBarProgress.setSecondaryProgress(0);
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setOnBufferingUpdateListener(this);
        mediaPlayer.setOnCompletionListener(this);
        mediaPlayer.setOnErrorListener(new OnErrorListener() {
            public boolean onError(MediaPlayer mp, int what, int extra) {
                tv_mp3.setText("Error in playing file !!");
                return true;
            }
        });
        mp3DownloadWindow = new PopupWindow(mp3PopupLayout, LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT, true);
        mp3DownloadWindow.showAtLocation(mp3PopupLayout, Gravity.BOTTOM, 30, 0);
        chooseToStart(true);
    }

    public void chooseToStart(boolean startFlag){
        if(startFlag){
            try {
                mediaPlayer.setDataSource(this.MP3URL);
                mediaPlayer.prepare(); // you must call this method after setup the datasource in setDataSource method. After calling prepare() the instance of MediaPlayer starts load data from URL to internal buffer. 
                mediaFileLengthInMilliseconds = mediaPlayer.getDuration(); // gets the song length in milliseconds from URL
            } catch (Exception e) {
                tv_mp3.setText(e.toString() + "\nClose it");
            }

            if(!mediaPlayer.isPlaying()){
                spinner.cancel();
                mediaPlayer.start();
                buttonPlayPause.setImageResource(R.drawable.button_pause);
            }else {
                mediaPlayer.pause();
                buttonPlayPause.setImageResource(R.drawable.button_play);
            }
            primarySeekBarProgressUpdater();
        }
    }
//other stuff
}
我需要知道在哪里以及如何使用微调器,以便在媒体播放器开始播放之前显示微调器

任何帮助都将不胜感激。感谢使用
prepareAsync()
setOnPreparedListener()
而不是
prepare()

mediaPlayer.setDataSource(this.MP3URL);
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
       // Hide whatever you need, mediaPlayer is prepared
       mp.start();
    }
});
// Show whatever you need, mediaPlayer is preparing
mediaPlayer.prepareAsync();