Я пытаюсь воспроизвести MP3 из потока, но проблема заключается в том, что после нажатия кнопки воспроизведения он будет воспроизводиться автоматически. Также кнопка воспроизведения не воспроизводит звук, она просто устанавливает его для потоковой передачи. Как сделать так, чтобы мой MP3 автоматически воспроизводился?
play.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (!mediaPlayer.isPlaying()) {
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
} catch (Exception e) {
e.printStackTrace();
}
mediaFileLengthInMilliseconds = mediaPlayer.getDuration();
if(!mediaPlayer.isPlaying()){
mediaPlayer.start();
play.setImageResource(R.drawable.ic_media_pause);
}else {
mediaPlayer.pause();
play.setImageResource(R.drawable.ic_media_play);
}
primarySeekBarProgressUpdater();
}
}});
sb.setMax(99);
sb.setOnTouchListener(this);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
}
private void primarySeekBarProgressUpdater() {
sb.setProgress((int)(((float)mediaPlayer.getCurrentPosition()/mediaFileLengthInMilliseconds)*100));
if (mediaPlayer.isPlaying()) {
notification = new Runnable() {
public void run() {
primarySeekBarProgressUpdater();
}
};
handler.postDelayed(notification,1000);
}
}
public boolean onTouch(View v, MotionEvent event) {
if(v.getId() == R.id.progress_bar){
/** Seekbar onTouch event handler. Method which seeks MediaPlayer to seekBar primary progress position*/
if(mediaPlayer.isPlaying()){
SeekBar sb = (SeekBar)v;
int playPositionInMillisecconds = (mediaFileLengthInMilliseconds / 100) * sb.getProgress();
mediaPlayer.seekTo(playPositionInMillisecconds);
}
}
return false;
}
public void onCompletion(MediaPlayer mp) {
play.setImageResource(R.drawable.ic_media_play);
mediaPlayer.stop();
}
public void onBufferingUpdate(MediaPlayer mp, int percent) {
sb.setSecondaryProgress(percent);
}
}
Я что-то не так делаю? Я нажимаю кнопку воспроизведения и вижу, что моя панель поиска заполняется, но она не воспроизводится.
Я также получаю это сообщение:
E/MediaPlayer(28985): stop called in state 0 E/MediaPlayer(28985):
error (-38, 0) E/MediaPlayer(28985): Error (-38,0)
E/MediaPlayer(28985): stop called in state 0 E/MediaPlayer(28985):
error (-38, 0) E/MediaPlayer(28985): Error (-38,0)
E/MediaPlayer(28985): stop called in state 0 E/MediaPlayer(28985):
error (-38, 0) E/MediaPlayer(28985): Error (-38,0)
E/MediaPlayer(28985): stop called in state 0 E/MediaPlayer(28985):
error (-38, 0) E/MediaPlayer(28985): Error (-38,0)
E/MediaPlayer(28985): stop called in state 0 E/MediaPlayer(28985):
error (-38, 0) E/MediaPlayer(28985): Error (-38,0)
E/MediaPlayer(28985): stop called in state 0 E/MediaPlayer(28985):
error (-38, 0) E/MediaPlayer(28985): Error (-38,0)