【发布时间】:2019-02-25 11:49:14
【问题描述】:
我们正在开发一个应用程序,我们可以在其中播放数组列表中的 3 首歌曲。在第一首歌曲之后,再次按下播放后应该播放下一首歌曲(这是有效的)。但是在第二首歌结束后,我们想要一个开始游戏按钮出现。我们在 OnCompletion 方法中实现了这一点,这适用于第一首歌曲,但不适用于第二首歌曲。 这是代码的一部分:
@Override public void onCompletion(MediaPlayer mediaPlayer) {
//adding the start game button after song finishes for the first time
// Button start_button = findViewById(R.id.startGame);
// start_button.setVisibility(View.VISIBLE);
Button start_button = findViewById(R.id.startGame);
start_button.setText(getString(R.string.START));
start_button.setVisibility(View.VISIBLE);
//changing the play button to replay after song finishes
ImageButton imgButton = findViewById(R.id.imageButton);
imgButton.setImageResource(R.drawable.replay);
}
});
public void NextSong(View view) {
// Logic following
if (songs.size() == 3) {
songs.get(0).stop();
songs.get(0).release();
mediaPlayer.release();
mediaPlayer=null;
//songs.get(0).reset();
songs.remove(0);
Button NextSong = findViewById(R.id.NextSong);
NextSong.setVisibility(View.INVISIBLE);
final TextView result_display = findViewById(R.id.result_view);
result_display.setVisibility(View.INVISIBLE);
} else if (songs.size() == 2) {
songs.get(0).release();
songs.remove(0);
Button NextSong = findViewById(R.id.NextSong);
NextSong.setVisibility(View.INVISIBLE);
final TextView result_display = findViewById(R.id.result_view);
result_display.setVisibility(View.INVISIBLE);
} else {
songs.get(0).release();
songs.remove(0);
// CONGRATS
final TextView result_display = findViewById(R.id.result_view);
result_display.setVisibility(View.VISIBLE);
result_display.setText(getString(R.string.Congrats));
}
能否请您帮助我们第二次达到 OnCompletion。
【问题讨论】:
-
你能发布你设置的监听器代码吗?你也注册 OnErrorListner 吗?如果媒体播放器抛出错误,那么你可以到达那里。
标签: android android-mediaplayer