Android 如何知道MediaPlayer是否处于停止状态?

Android 如何知道MediaPlayer是否处于停止状态?,android,android-mediaplayer,Android,Android Mediaplayer,我正在构建一个可以播放多个视频的应用程序,我有两种不同的用户场景: 情景1。播放视频“A”时,如果用户单击“下一步”按钮,则它将停止并播放下一个视频“B”。 情景2。播放视频“A”,如果完成,用户单击“下一步”按钮,它将播放视频“B” 对于第一个场景,我使用mediaPlayer.isplay()方法检测它是否处于start状态,并且工作正常。但是,如果我在第二个场景中使用相同的代码,isplay()抛出IllegalStateException 以下是我播放视频的代码: private voi

我正在构建一个可以播放多个视频的应用程序,我有两种不同的用户场景:

情景1。播放视频“A”时,如果用户单击“下一步”按钮,则它将停止并播放下一个视频“B”。 情景2。播放视频“A”,如果完成,用户单击“下一步”按钮,它将播放视频“B”

对于第一个场景,我使用
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();
        }
    }
});