Android视频播放的两种方式介绍

时间:2023-12-18 16:43:50
1、在Android 中播放视频的方式有两种:



第一种方式是使用MediaPlayer 结合SurfaceView
来播放,通过MediaPlayer来控制视频的播放、暂停、进度等;

通过SurfaceView 来显示视频内容;

优点:灵活性高,可以进行自定义;

缺点:难度比较大;



第二种方式是使用VideoView 来播放,这个类其实也是继承了SurfaceView 类,并且实现了MediaController.

MediaPlayerController 这个用于控制媒体播放的接口,另外在VideoView上还有一个用于对媒体播放进行控制的面板,包括快进、快退、播放、暂停按钮以及一个进度条; 

优点:比较简单,可以直接进行使用;

缺点:灵活性不高;



2、下面介绍VideoView的使用方法:

setVideoViewPath(String path);

设置播放视频的路径;

setVideoURL(Uri uri);

设置视频的URI

start();                      
                                         开始播放;

seekTo(int msec);

定位;

pause();                      
                                         暂停播放;

  stop();                                                                停止播放;

  setMediaController(MediaController);        设置MediaController 对象;



媒体控制面版常用方法:MediaController:

  hide();                                隐藏MediaController;

  show();                                显示MediaController

  show(int timeout);        设置MediaController显示的时间,以毫秒计算,如果设置为0则一直到调用hide()时隐藏;



3、案例:实现视频播放效果:

java代码:

  1. package com.example.mutilmediaapp_videoview;
  2. import android.net.Uri;
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.content.pm.ActivityInfo;
  6. import android.view.Menu;
  7. import android.view.Window;
  8. import android.view.WindowManager;
  9. import android.widget.MediaController;
  10. import android.widget.VideoView;
  11. public class MainActivity extends Activity {
  12. private VideoView video;
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. /* 设置播放视频时候不需要的部分 *//* 以下代码需要写在setContentView();之前 */
  16. /* 去掉title */
  17. requestWindowFeature(Window.FEATURE_NO_TITLE);
  18. /* 设置全屏 */
  19. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  20. /* 设置屏幕常亮 *//* flag:标记 ; */
  21. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  22. setContentView(R.layout.main);
  23. /* 获取组件对象 */
  24. video = (VideoView) findViewById(R.id.videoView);
  25. /* 获取MediaController对象,控制媒体播放 */
  26. MediaController mc = new MediaController(this);
  27. video.setMediaController(mc);
  28. /* 设置URI , 指定数据 */
  29. video.setVideoURI(Uri.parse("/mnt/sdcard/aa.mp4"));
  30. /* 开始播放视频 */          video.start();
  31. /*  请求获取焦点 */
  32. video.requestFocus();
  33. }
  34. }