Android MediaPlayer是Android平台上用于播放音频和视频文件的类。当我们使用MediaPlayer播放音视频时,有时候我们需要在音视频播放完成后进行一些特定的操作。这时就可以使用MediaPlayer的onCompletion监听器。

在Android中,MediaPlayer类提供了一个onCompletionListener接口,用于监听MediaPlayer播放完成的事件。当MediaPlayer播放完成时,onCompletion方法将被调用。我们可以在onCompletion方法中编写我们需要执行的代码,比如播放下一首音乐、显示播放完成的提示等。

下面是一个使用MediaPlayer的onCompletionListener的示例代码:

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("
mediaPlayer.prepare();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // 在这里编写播放完成后需要执行的代码
        Toast.makeText(MainActivity.this, "播放完成", Toast.LENGTH_SHORT).show();
    }
});
mediaPlayer.start();

在上面的示例代码中,我们创建了一个MediaPlayer对象,并设置了音频源。然后调用prepare方法准备MediaPlayer进行播放。接下来,我们通过调用setOnCompletionListener方法设置了一个onCompletionListener,当MediaPlayer播放完成时,onCompletion方法将被调用。在onCompletion方法中,我们显示了一个Toast提示播放完成。

除了使用匿名内部类,我们还可以使用lambda表达式来简化代码:

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("
mediaPlayer.prepare();
mediaPlayer.setOnCompletionListener(mp -> {
    // 在这里编写播放完成后需要执行的代码
    Toast.makeText(MainActivity.this, "播放完成", Toast.LENGTH_SHORT).show();
});
mediaPlayer.start();

流程图如下:

flowchart TD
    A(创建MediaPlayer对象) --> B(设置音频源)
    B --> C(准备播放)
    C --> D(设置onCompletionListener)
    D --> E(播放音频)
    E --> F(监听播放完成事件)
    F --> G(执行特定操作)

序列图如下:

sequenceDiagram
    participant A as 用户
    participant B as 应用程序
    participant C as MediaPlayer
    A->>B: 点击播放按钮
    B->>C: 创建MediaPlayer对象
    C->>C: 设置音频源
    C->>C: 准备播放
    C->>C: 设置onCompletionListener
    C->>C: 播放音频
    C-->>B: 播放完成
    B->>B: 执行特定操作
    B-->>A: 播放完成提示

以上是使用Android MediaPlayer的onCompletionListener的示例代码和相关说明。通过使用onCompletionListener,我们可以在音视频播放完成后实现一些特定的操作,增强用户体验。在实际开发中,我们可以根据具体需求来使用onCompletionListener,定制自己的播放完成后的逻辑。