📜  android MediaPlayer 取得进展 (1)

📅  最后修改于: 2023-12-03 15:29:20.764000             🧑  作者: Mango

Android MediaPlayer 取得进展

Android MediaPlayer 是 Android 操作系统提供的一种用于播放音频和视频的类。在使用 MediaPlayer 时,有时需要获取音频/视频的播放进度来进行一些操作。本文将介绍如何使用 Android MediaPlayer 获取音频/视频的播放进度。

MediaPlayer 介绍

MediaPlayer 是 Android 提供的一个用于播放音频和视频的类,可以直接从本地文件或网络地址中播放媒体文件。MediaPlayer 可以实现基本的播放控制,如开始、暂停、停止等。同时也可以获取音频/视频的一些属性,如播放进度、总时长等。

获取播放进度

获取 MediaPlayer 的播放进度,可以通过调用 MediaPlayer 的 getCurrentPosition() 方法来获取当前播放的位置,返回值的单位是毫秒。例如:

int currentPosition = mediaPlayer.getCurrentPosition();

同时,通过调用 MediaPlayer 的 getDuration() 方法获取媒体文件的总时长,返回值的单位也是毫秒。例如:

int duration = mediaPlayer.getDuration();

获取了当前播放的位置和媒体文件的总时长,就可以计算出当前播放的进度百分比了。例如:

int progress = (int)(((float) currentPosition / duration) * 100);
定时获取播放进度

通过上面的方式可以获取当前播放的进度,但是如果想要实时获取当前播放进度呢?这里介绍一种定时器实现的方式:

private Timer mTimer;
mTimer.schedule(new TimerTask() {
    @Override
    public void run() {
        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
            int currentPosition = mediaPlayer.getCurrentPosition();
            int duration = mediaPlayer.getDuration();
            int progress = (int)(((float) currentPosition / duration) * 100);
            // 更新UI界面
            updateProgress(progress);
        }
    }
}, 0, 1000);

以上代码会每隔一秒钟获取一次当前播放进度,并且调用 updateProgress 方法更新 UI 界面。

总结

本文介绍了如何使用 Android MediaPlayer 获取音频/视频的播放进度,包括如何获取当前播放进度、获取媒体文件的总时长和计算当前播放的进度百分比等。同时也介绍了一种定时器实现的方式实时获取当前播放进度。