Android多媒体功能开发——使用VideoView控件播放视频
Posted nanoage
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android多媒体功能开发——使用VideoView控件播放视频相关的知识,希望对你有一定的参考价值。
android播放视频类主要有两种方式:
- VideoView控件
- SurfaceView控件+MediaPlayer
VideoView是SurfaceView的子类,实际上VideoView相当于SurfaceView + MediaPlayer。SurfaceView支持的功能VideoView都支持。也可用VideoView+MediaPlayer的方式播放。
视频播放控制可以使用MediaController控件,也可以用代码进行控制。MediaController是一个播放控制面板,可以加到VideoView控件上。同时,SurfaceView和VideoView都提供了播放控制的方法,所以可以用代码进行播放控制。
用VideoView播放视频的基本步骤是:创建或获取VideoView控件、设置视频数据源、开始播放、停止播放、释放资源。播放过程中可以暂停和继续。停止播放后可以恢复,此时会再从头播放。也可以重新设置视频数据源,播放另一个视频。基本流程和对应的代码如下图:
下面用一个简单的例子进行说明,界面和对应的关键代码如下:
视频源采用外部存储上的视频,通过视频选择界面进行选择。若要播放资源ID或assets中的文件,需采用VideoView+MediaPlayer的方式。在界面上用四个按钮对应VideoView对象的相应方法进行播放控制。设置一个播放控制面板,需点击视频才能出现,会自动隐藏。
例子的完整代码如下:
public class MainActivity extends AppCompatActivity
VideoView videoView;
static final int PICK_VIDEO = 1;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
setContentView(ll);
Button btnSelect = new Button(this);
btnSelect.setText("Select Video");
ll.addView(btnSelect);
btnSelect.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View arg0)
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); // 选择文件动作
intent.setType("video/*");
startActivityForResult(intent, PICK_VIDEO); // 启动文件选择应用
);
Button btnPlay = new Button(this);
btnPlay.setText("Play");
ll.addView(btnPlay);
btnPlay.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View arg0)
videoView.start();
);
Button btnPause = new Button(this);
btnPause.setText("Pause");
ll.addView(btnPause);
btnPause.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View arg0)
videoView.pause();
);
Button btnResume = new Button(this);
btnResume.setText("Resume");
ll.addView(btnResume);
btnResume.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View arg0)
videoView.resume();
);
Button btnStop = new Button(this);
btnStop.setText("StopPlayback");
ll.addView(btnStop);
btnStop.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View arg0)
videoView.stopPlayback();
);
// 创建VideoView对象
videoView = new VideoView(this);
// 设置播放控制面板
MediaController controller = new MediaController(this);
videoView.setMediaController(controller);
// 将VideoView控件添加到布局
ll.addView(videoView);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
// 处理选择视频的结果,选中的图片文件的uri保存在Intent的getData()中
if (requestCode == PICK_VIDEO && resultCode == RESULT_OK)
Uri uri = data.getData(); // 得到选中的视频文件的uri
Log.i("zzk", "选择视频成功, uri=" + uri);
videoView.setVideoURI(uri);
@Override
protected void onDestroy()
super.onDestroy();
videoView.suspend();
VideoView类的主要方法包括:
- void setVideoPath(String path):以文件路径的方式设置视频源
- void setVideoURI(Uri uri):以Uri的方式设置视频源,网络Uri或本地Uri
- void start():开始播放
- void pause():暂停,调用start()可以继续
- void stopPlayback():停止播放,调用resume()可以从头重新播放
- void resume():重新播放
- int getDuration():获取当前播放视频的总长度,单位为毫秒
- int getCurrentPosition():获取当前播放的位置,单位为毫秒
- void seekTo(int msec):从第几毫秒开始播放
- isPlaying():是否在播放视频
- setMediaController(MediaController controller):设置MediaController控制器
- setOnCompletionListener(MediaPlayer.onCompletionListener l):设置监听播放完成的事件
- setOnPreparedListener(MediaPlayer.OnPreparedListener l):设置监听视频装载完成的事件
以上是关于Android多媒体功能开发——使用VideoView控件播放视频的主要内容,如果未能解决你的问题,请参考以下文章
Android多媒体功能开发(13)——使用MediaRecorder类录制视频