`
xidajiancun
  • 浏览: 457495 次
文章分类
社区版块
存档分类
最新评论

使用VideoView和MediaController进行视频播放

 
阅读更多

一个视频播放的activity,可以直接拿过来用,比较简单,直接贴个代码留作记录,效果如下:



/**
 * 视频播放的activity<br>
 * 使用方法:<br>
 * 1、AndroidManifest.xml中添加此activity<br>
 * 2、Intent中存入待播放视频的URL,支持本地和网络<br>
 * 3、启动这个activity<br>
 * <br>
 * example:<br>
 * String url = "play url";<br>
 * Intent intent = new Intent();<br>
 * intent.setClass(this, VideoPlayActivity.class);<br>
 * intent.putExtra(VideoPlayActivity.KEY_URL, url);<br>
 * startActivity(intent);<br>
 * 
 * @author ttworking
 * 
 */
public class VideoPlayActivity extends Activity implements OnPreparedListener, OnErrorListener {
	public static final String KEY_URL = "view_url";

	private static final String TAG = "VideoPlayActivity";
	private static final int PLAY_RETURN = 2 * 1000; // 2 seconds
	private static final String KEY_PLAY_POSITON = "paly_position";
	private static final String TOAST_ERROR_URL = "Paly url is null, please check parameter:" + KEY_URL;
	private static final String TOAST_ERROR_PLAY = "Paly error, please check url exist!";
	private static final String DIALOG_TITILE = "奋力加载中,请稍后...";

	private static String url;

	private ProgressDialog progressDialog;
	private MediaController mc;
	private VideoView videoView;
	private LinearLayout llMain;
	private LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		url = getIntent().getStringExtra(KEY_URL);
		if (url == null && savedInstanceState != null) {
			url = savedInstanceState.getString(KEY_URL);
		}

		if (url == null) {
			Toast.makeText(getApplicationContext(), TOAST_ERROR_URL, Toast.LENGTH_LONG).show();
			finish();
			return;
		}

		setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);

		videoView = new VideoView(this);
		videoView.setVideoURI(Uri.parse(url));
		videoView.requestFocus();
		videoView.setOnPreparedListener(this);
		videoView.setOnErrorListener(this);

		mc = new MediaController(this);
		mc.setAnchorView(videoView);
		mc.setKeepScreenOn(true);

		videoView.setMediaController(mc);

		llMain = new LinearLayout(this);
		llMain.setGravity(Gravity.CENTER_VERTICAL);
		llMain.setOrientation(LinearLayout.VERTICAL);
		llMain.setLayoutParams(params);

		llMain.addView(videoView, params);
		setContentView(llMain);

		initDialog();
	}

	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);

		int palyPosition = videoView.getCurrentPosition();
		if (palyPosition > PLAY_RETURN) {
			palyPosition -= PLAY_RETURN;
		}
		outState.putInt(KEY_PLAY_POSITON, palyPosition);
		outState.putString(KEY_URL, url);
	}

	@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) {
		super.onRestoreInstanceState(savedInstanceState);

		videoView.seekTo(savedInstanceState.getInt(KEY_PLAY_POSITON));
	}

	@Override
	public void onPrepared(MediaPlayer mp) {
		progressDialog.cancel();

		videoView.start();
	}

	@Override
	public boolean onError(MediaPlayer mp, int what, int extra) {
		Log.d(TAG, "onError:" + url);

		Toast.makeText(getApplicationContext(), TOAST_ERROR_PLAY + "\n" + url, Toast.LENGTH_LONG).show();
		progressDialog.cancel();
		finish();

		return true;
	}

	private void initDialog() {
		progressDialog = new ProgressDialog(this);
		progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
		progressDialog.setMessage(DIALOG_TITILE);
		progressDialog.setCancelable(false);
		progressDialog.show();
	}
}


分享到:
评论

相关推荐

    Android下使用VideoView配合MediaController播放视频Demo

    Android下使用VideoView配合MediaController播放视频Demo,详细参见博客:http://www.cnblogs.com/plokmju/p/android_VideoView.html

    VideoView+MediaController播放网络视频

    VideoView+MediaController播放网络视频 预加载视频

    Android使用VideoView+MediaController自定义seekbar和全屏切换功能

    自定义mediacontroller进度条样式,全屏切换功能

    定制VideoView,自定义MediaController

    定制VideoView,自定义MediaController

    详解Android App中使用VideoView来实现视频播放的方法

    通过VideoView播放视频的步骤: 1、在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件 2、调用VideoView的如下两个方法来加载指定的视频 (1)setVidePath(String path):加载path文件代表的视频 (2...

    Android移动开发-使用VideoView播放视频的实现

    使用VideoView播放视频的步骤如下: Step1:在界面布局文件中定义VideoView控件,或在程序中创建VideoView控件; Step2:调用VideoView的如下两个方法来加载指定视频; -&gt;setVideoPath(String path):加载path...

    VideoView视频播放

    本Demo实现了自定义样式的MediaController以及结合VideoView的半屏视频播放和全屏视频播放

    Android VideoView本地视频播放

    本文将讲解使用VideoView播放本地视频,使用起来相对简单,在其中添加了MediaController类来实现更多的视频控制功能。

    Android使用VideoView出现无法播放此视频问题的解决方法

    Android提供了 VideoView组件,它的作用与ImageView类似,只是ImageView用于显示图片,而VideoView用于播放视频,下面这篇文章主要给大家介绍了关于利用VideoView出现无法播放此视频问题的解决方法,需要的朋友可以...

    AudioPlayer

    Has anyone tried playing the video with VideoView and MediaController? I tried but without much luck. I did notice however that when instantiating MediaController, the compiler requires you to put in...

    android VideoView MP4 视频播放器 实例源码

    使用VideoView控件实现播放,自定义MediaController

    Android自定义视频播放器的代码例子

    Android自定义视频播放器的代码例子。首先演示了原生控件VideoView和MediaController的联合使用,然后指出该组合的不足之处,最后给出了改进之后的自定义视频播放器的设计思路和功能演示效果。

    VideoView实现视频无缝连续播放

    该视频播放器采用了较为简单的videoview,基本思想就是用setOnCompletionListener对视频播进行监听,当视频播放完毕之后,播放下一段视频,视频源放在SD卡内的Download文件夹内,具体代码如下: public class ...

    Android播放视频的三种方式

    在布局文件中使用VideoView结合MediaController来实现对其控制。 3)、使用MediaPlayer类和SurfaceView来实现,这种方式很灵活。 1、调用其自带的播放器: Uriuri = Uri.parse(Environment....

    Android生成视频预览缩略图播放指定视频.rar

    Android生成视频预览缩略图播放指定视频,学习一下如何获取界面上VideoView组件,如何创建MediaController对象,设置videoView与mController建立关联,设置mController与videoView建立关联,让VideoView获取焦点等...

    安卓视频播放

    MediaController mc = new MediaController(this); mc.setAnchorView(videoView); mc.setMediaPlayer(videoView); Uri video = Uri.parse(url); videoView.setMediaController(mc); videoView....

    android视频播放代码

    videoView.setMediaController(new MediaController(this)); //添加本地文件("android:resource://(包名)/"+R.raw.(mp4文件的名) raw是自己新建的一个文件夹) videoView.setVideoURI(Uri.parse("android....

    Android 播放视频常见问题小结

    在android 开发中常见到视频播放的问题,在常规的视频中 有直接用videoView + MediaController 或者 mediaController + serfercie holder 常见的问题 1 在播放中如何处理播放器的横屏切换 和 播放器上的文案显示的...

    VideoDemo.rar

    Android视频播放器,使用VideoView控件实现播放,自定义MediaController,是一款不错的Android播放器

    Android videoview抢占焦点的处理方法

    问题描述: ...无效,现象是视频加载时,焦点是在button处,但是当视频加载完成开始播放时,整个activity失去焦点,几秒后,焦点跑到videoview上面。  原因分析: 查看了一下VideoView的源码,发现原

Global site tag (gtag.js) - Google Analytics