我需要一些建议或帮助... 我有音频流和开/关按钮。 我不明白发生了什么,..每次我使用playMedia()启动流时,仍然可以。在stopMedia()的帮助下停止后,无法重新启动音频。我每次都会出错。 我在哪里错了?
/// Create Media Player ///
public void mediaPlayer() {
mediaPlayer = new MediaPlayer ();
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(music_url);
mediaPlayer.setaudioStreamType ( AudioManager.STREAM_MUSIC );
mediaPlayer.setLooping ( false );
mediaPlayer.prepareAsync ();
mediaPlayer.setOnPreparedListener ( mp -> Toast.makeText ( Mainactivity.this,"Buffering...",Toast.LENGTH_LONG) .show () );
mediaPlayer.setOnCompletionListener( mp -> mediaPlayer.release () );
mediaPlayer.setonerrorlistener ( (mp,what,extra) -> {
mediaPlayer.stop ();
Toast.makeText ( Mainactivity.this,"Audio Streaming is Unavailable",Toast.LENGTH_LONG) .show ();
play.setBackgroundResource (R.drawable.play_btn);
return false;
} );
} catch (IOException e) {
e.printStackTrace ();
}
}
其他功能
public void startMedia(){
mediaAudioManager.requestAudioFocus ( mFocusRequest );
play.setBackgroundResource (R.drawable.pause_btn);
mediaPlayer.start();
Log.d(TAG,"media playing");
}
public void pauseMedia(){
play.setBackgroundResource (R.drawable.play_btn);
mediaPlayer.pause ();
Log.d(TAG,"media pause");
}
// onCreate //
mediaPlayer ();
play = findViewById ( R.id.playButton );
play.setOnClicklistener ( v -> {
if(!mediaPlayer.isPlaying ()){
startMedia ();
} else {
pauseMedia ();
}
} );
mediaPlayer.isPlaying()--->总是报错;
尝试使用简单的boolean check;
play = findViewById ( R.id.playButton );
play.setOnClicklistener ( v -> {
if(!check){
startMedia ();
} else {
pauseMedia ();
}
} );
无效...错误!
尝试修改
stopMedia();和startMedia();在--->
public void startMedia(){
mediaAudioManager.requestAudioFocus ( mFocusRequest );
play.setBackgroundResource (R.drawable.pause_btn);
Toast.makeText ( Mainactivity.this,"Audio Streaming",Toast.LENGTH_SHORT) .show ();
if(mediaPlayer == null){
mediaPlayer();
mediaPlayer.start ();
} else {
mediaPlayer.start ();
Log.d ( TAG,"media playing!" );
}
}
public void stopMedia(){
play.setBackgroundResource (R.drawable.play_btn);
/// --- > all combinations variants have been tested No work < ---
//mediaPlayer.stop();
//mediaPlayer.onSeek(0);
//mediaPlayer.pause();
//mediaPlayer.reset();
//mediaPlayer.release();
mediaPlayer = null;
}
预期结果: 播放器每次从流的更新位置重新启动。这是我广播电台的实时音频流。
|或|
每次我使用--->按钮play
停止音频流并重新启动时,
再次创建播放器...
我不知道,整个故事都不是一件好事,因为按照我们的逻辑,我们可以顺利地前进...但这是行不通的。
谢谢您能以某种方式帮助我...
p.s。 mediaPlayer.pause();
始终可以使用任何代码组合--->,但我不需要在实时audioStream中暂停...