加载流音乐时显示进度条

时间:2017-11-30 17:23:17

标签: java android progress-bar media-player

我正在尝试创建一个流音乐应用程序,我使用下面的代码可以正常工作,但我希望在加载流媒体音乐时显示progress bar。出于某些原因,当我使用mediaPlayer.prepare();代替mediaPlayer.prepareAsync();时,progressbar会在加载音乐时出现

mediaPlayer = new MediaPlayer();
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            AudioAttributes attribs = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA).setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build();
            mediaPlayer.setAudioAttributes(attribs);

        } else {
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        }
        new PlayerTask().execute(stream);


 @SuppressLint("StaticFieldLeak")
    public class PlayerTask extends AsyncTask<String, Void, Boolean> {
        ProgressBar loadingRL = findViewById(R.id.progressBar);
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loadingRL.setVisibility(View.VISIBLE);
            beforradio.start();
        }
        @Override
        protected Boolean doInBackground(String... strings) {
            try {
                mediaPlayer.setDataSource(strings[0]);
                mediaPlayer.prepareAsync();
                prepared = true;
            } catch (IOException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            }
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    mediaPlayer.start();

                }
            });
            return prepared;
        }

@Override
        protected void onPostExecute(Boolean aBoolean) {
            super.onPostExecute(aBoolean);
            MusicButton.setVisibility(View.VISIBLE);
            MusicButton.setChecked(true);
            loadingRL.setVisibility(View.GONE);
            Rlsong.setVisibility(View.VISIBLE);
        }

0 个答案:

没有答案