Andorid播放多媒体文件——播放视频
以下内容摘自郭霖《第一行代码》第三版
播放视频
VideoView的常用方法
| 方法名 | 功能描述 |
|---|---|
| setVideoPath() | 设置要播放的视频文件的位置 |
| start() | 开始或继续播放视频 |
| pause() | 暂停播放视频 |
| resume() | 将视频从头开始播放 |
| seekTo() | 从指定的位置开始播放视频 |
| isPlaying() | 判断当前是否正在播放视频 |
| getDuration() | 获取载入的视频文件的时长 |
| suspend() | 释放ViedoView所占用的资源 |
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/play"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="Play" /><Buttonandroid:id="@+id/pause"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="Pause" /><Buttonandroid:id="@+id/replay"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="Replay" />LinearLayout><VideoViewandroid:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="wrap_content"/>LinearLayout>
VideoView不支持直接播放assets目录下的视频资源,所以我们只能寻找其他的解决方案。res目录下允许我们再创建一个raw目录,像诸如音频、视频之类的资源文件也可以放在这里,并且VideoView是可以直接播放这个目录下的视频资源的。
MainActivity
package com.example.playvideotestimport android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.VideoViewclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val uri = Uri.parse("android.resource://$packageName/${R.raw.video}")val play: Button = findViewById(R.id.play)val pause: Button = findViewById(R.id.pause)val replay: Button = findViewById(R.id.replay)val videoView: VideoView = findViewById(R.id.videoView)videoView.setVideoURI(uri)play.setOnClickListener {if(!videoView.isPlaying){videoView.start() // 开始播放}}pause.setOnClickListener {if(videoView.isPlaying){videoView.pause() // 暂停播放}}replay.setOnClickListener {if(videoView.isPlaying){videoView.resume() // 重新播放}}}override fun onDestroy() {super.onDestroy()val videoView: VideoView = findViewById(R.id.videoView)videoView.suspend()}
}
首先在onCreate()方法中调用了Uri.parse()方法,将raw目录下的video.mp4文件解析成了一个Uri对象,这里使用的写法是Android要求的固定写法。然后调用VideoView的setVideoURI()方法将刚才解析出来的Uri对象传入,这样VideoView就初始化完成了。
最后在onDestroy()方法中,我们还需要调用一下suspend()方法,将VideoView所占用的资源释放掉。
注意:VideoView并不是一个万能的视频播放工具类,它在视频格式的支持以及播放效率方面都存在着较大的不足。所以,如果想要仅仅使用VideoView就编写出一个功能非常强大的视频播放器是不太现实的。但是如果只是用于播放一些游戏的片头动画,或者某个应用的视频宣传,使用VideoView还是绰绰有余的。
效果图:

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
