Android 如何知道MediaPlayer是否处于停止状态?
我正在构建一个可以播放多个视频的应用程序,我有两种不同的用户场景: 情景1。播放视频“A”时,如果用户单击“下一步”按钮,则它将停止并播放下一个视频“B”。 情景2。播放视频“A”,如果完成,用户单击“下一步”按钮,它将播放视频“B” 对于第一个场景,我使用Android 如何知道MediaPlayer是否处于停止状态?,android,android-mediaplayer,Android,Android Mediaplayer,我正在构建一个可以播放多个视频的应用程序,我有两种不同的用户场景: 情景1。播放视频“A”时,如果用户单击“下一步”按钮,则它将停止并播放下一个视频“B”。 情景2。播放视频“A”,如果完成,用户单击“下一步”按钮,它将播放视频“B” 对于第一个场景,我使用mediaPlayer.isplay()方法检测它是否处于start状态,并且工作正常。但是,如果我在第二个场景中使用相同的代码,isplay()抛出IllegalStateException 以下是我播放视频的代码: private voi
mediaPlayer.isplay()
方法检测它是否处于start
状态,并且工作正常。但是,如果我在第二个场景中使用相同的代码,isplay()
抛出IllegalStateException
以下是我播放视频的代码:
private void playVideos(SurfaceHolder holder) {
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(holder);
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + video_files[mCounter]);
mediaPlayer.setDataSource(this, uri);
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (mCounter <= 8) {
onVideoCompletion(mediaPlayer);
} else {
mediaPlayer.stop();
mediaPlayer.release();
}
}
});
} catch (IOException e) {
} catch (IllegalArgumentException e) {
} catch (IllegalStateException e) {
}
}
这对我的两个场景都有效,但我不确定这是否是正确的方法。是否有任何方法可以检测
mediaPlayer
是否处于Stopped
状态?我查看了您可以找到的谷歌文档。您只能知道播放器是否正在播放();或isLooping()。。。所以,没有“简单”或“短”的方法来实现你想要的。希望能有帮助。是的,我已经检查了那个文件,但我不确定是否有其他办法。。谢谢你!
nextBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(mediaPlayer != null) {
if(mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
mCounter += 1;
if (mCounter <= 8) {
playVideos(holder);
}
}
});
boolean mIsPlaying = false;
...
// in button listener
if(mIsPlaying) {
mediaPlayer.stop();
mediaPlayer.release();
}
...
// in playVideos() function
mediaPlayer.start();
mIsPlaying = true;
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (mCounter <= 8) {
onVideoCompletion(mediaPlayer);
} else {
mediaPlayer.stop();
mediaPlayer.release();
}
}
});