【问题标题】:Android - Play music from urlAndroid - 从 url 播放音乐
【发布时间】:2015-08-24 15:16:03
【问题描述】:

我试图在不下载的情况下从 url 播放音乐,每件事都是写的,唯一的问题是我使用下面的代码来播放和暂停音乐,首先按下按钮音乐开始播放,然后再次按下它音乐暂停了,但是如果我再次按下按钮没有任何反应,它应该从暂停的地方播放音乐,但它没有,这是什么问题?

buttonPlayPause = (ImageView) findViewById(R.id.play);
    buttonPlayPause.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            if (isPlaying) {
                buttonPlayPause.setImageResource(R.drawable.play);
                mediaPlayer.pause();
                isPlaying = false;
            } else {
                buttonPlayPause.setImageResource(R.drawable.pause);
                new Stream().execute();
            }
        }
    });

private class Stream extends AsyncTask<String, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            mediaPlayer.setDataSource(url);
            mediaPlayer.prepare();
            mediaFileLengthInMilliseconds = mediaPlayer.getDuration();
            mediaPlayer.start();
            animation.cancel();
            isPlaying = true;
            primarySeekBarProgressUpdater();
        } catch (Exception e) {
            return "Exception Caught";
        }
        return url;
    }

    @Override
    protected void onPostExecute(String result) {
    }
}

【问题讨论】:

  • 附注:为什么要在 onClick(View v) 方法中检查v.getId() == R.id.play?是不同的按钮调用这个方法吗?
  • 你说得对,我修好了
  • 可能是因为你使用的是 prepare() 而不是 prepareAsync()

标签: android android-mediaplayer seekbar


【解决方案1】:

在这里我使用两个按钮, 1 暂停和播放。 stop.ok 的另一个按钮让代码, 在您的按钮中

switch case 添加以下编码, btnPlayBack 用于暂停和播放。btnStop 用于停止播放音乐。在这里我创建了名为 mediaPlayer 的全局 MediaPlayer 实例,

 @Override
public void onClick(View v) {
    switch ( v.getId() ) {
        case R.id.button_stop_play:
            if ( mediaPlayer != null && buttonAction == 0 ) {
                mediaPlayer.pause();
                buttonAction = 1;
                btnPlayback.setText("Play");
            }
            else {
                try {
                    mediaPlayer.start();
                    buttonAction = 0;
                    btnPlayback.setText("Pause");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            break;
        case R.id.button_stop:
            mediaPlayer.stop();
            mediaPlayer = null;
            break;
    }
}

对于android back key press,您也可以通过在此处添加此行来停止播放音乐

@Override
public void onBackPressed() {
    mediaPlayer.stop();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多