Android 视频播放控件使用指南

在Android开发中,视频播放是一个常见的需求。Android提供了多种视频播放控件,如VideoViewExoPlayer等。本文将介绍如何使用这些控件来实现视频播放功能,并提供一些代码示例。

1. VideoView 控件

VideoView是一个简单的视频播放控件,它提供了基本的视频播放功能。使用VideoView时,需要在布局文件中定义它,并在Activity中设置视频源。

1.1 布局文件

<RelativeLayout xmlns:android="
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <VideoView
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true" />
</RelativeLayout>

1.2 Activity 中设置视频源

public class VideoActivity extends AppCompatActivity {
    private VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);

        videoView = findViewById(R.id.videoView);

        // 设置视频源
        Uri videoUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sample_video);
        videoView.setVideoURI(videoUri);

        // 开始播放
        videoView.start();
    }
}

2. ExoPlayer 控件

ExoPlayer是一个更强大的视频播放库,它提供了更多的自定义选项和更好的性能。使用ExoPlayer时,需要添加依赖并创建一个SimpleExoPlayer实例。

2.1 添加依赖

build.gradle文件中添加以下依赖:

dependencies {
    implementation 'com.google.android.exoplayer:exoplayer:2.X.X' // 请使用最新版本
}

2.2 使用 ExoPlayer 播放视频

public class ExoPlayerActivity extends AppCompatActivity {
    private SimpleExoPlayer player;
    private VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_exo_player);

        videoView = findViewById(R.id.videoView);

        // 创建 SimpleExoPlayer 实例
        player = new SimpleExoPlayer.Builder(this).build();

        // 设置视频源
        Uri videoUri = Uri.parse("
        MediaItem mediaItem = MediaItem.fromUri(videoUri);
        player.setMediaItem(mediaItem);

        // 准备播放
        player.prepare();

        // 将 SimpleExoPlayer 设置为 VideoView 的播放源
        videoView.setPlayer(player);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (player != null) {
            player.release();
        }
    }
}

3. 视频播放流程

以下是使用VideoViewExoPlayer播放视频的流程:

sequenceDiagram
    participant User as U
    participant Activity as A
    participant VideoView as VV
    participant SimpleExoPlayer as SEP

    U->>A: 打开视频播放界面
    A->>VV: 初始化 VideoView
    A->>SEP: 初始化 SimpleExoPlayer
    A->>VV: 设置视频源
    A->>SEP: 设置视频源
    A->>VV: 开始播放
    A->>SEP: 准备播放
    VV->>U: 显示视频
    SEP->>U: 显示视频

4. 结语

本文介绍了Android中两种常见的视频播放控件:VideoViewExoPlayerVideoView简单易用,适合基本的视频播放需求;而ExoPlayer功能强大,适合需要更多自定义选项的场景。开发者可以根据项目需求选择合适的控件来实现视频播放功能。