项目中有用到视频播放的功能,因为我自己也是菜鸟一枚,参考了许多框架之后,觉得JieCao应该简单最好处理,所以就选择用JieCao来播放视频了。JIecao本身是基于安卓MediaPlayer的,所以使用方法类似,不过对于很多偷懒的人来说,省去了直接使用MediaPlayer中间很多的过程。

附上Jiecao的Git地址:https://github.com/lipangit/JieCaoVideoPlayer , 具体用法可以参考文档指南,或者加群问。

这里的代码是接上一篇文章写的《Android遍历文件夹下的视频文件,获取视频文件的缩略图展示》,偷懒如我,还请见谅,下面开始正文了。老规矩,先看下效果如何。






oplayer lite IOS 如何播放win10共享_视频



开始录源码了,跟上篇文章重复的地方我就不多讲了,先看下要注意的地方。首先是jar包的冲突,这是引入依赖包的时候的报错信息,说是发现了两个v4.jar包

oplayer lite IOS 如何播放win10共享_android_02

我的做法是删除了自己工程中的v4.jar包,下面是我的工程结构

oplayer lite IOS 如何播放win10共享_框架_03


这下jar包就都是外部引入的了,跟自己的工程没关系。

首先看下MainActivity中新增和改变的地方。

oplayer lite IOS 如何播放win10共享_android_04

看下Adapter中新增的部分,仅仅只多写了一句。

oplayer lite IOS 如何播放win10共享_jar包_05

这里我在adapter中把自己定义的实体类MediaBean作为Tag标签设置给GridView的每个item,所以就可以直接通过getTag()得到对应的实体类,个人以为这一点值得新手菜鸟借鉴和学习,不用在使用的时候另外去建立一个对应的顺序的List,然后根据position取到对应的实体。


跟上一篇想比,多加了一个播放的activity,这里也贴出来给大家参考下,其实很简单的。


public class JCPlayerActivity extends Activity {
	
	JCVideoPlayerStandard jcVideoPlayerStandard ;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_jcplayer);
		initView();
	}
	
	private void initView(){
		jcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.jiecao_player_view);
		MediaBean bean = (MediaBean) getIntent().getSerializableExtra("media"); // 获取传递过来的bean
		String path = bean.getPath(); // 视频地址
		String name = bean.getMediaName(); // 视频名称
		jcVideoPlayerStandard.setUp(path, JCVideoPlayerStandard.SCREEN_WINDOW_FULLSCREEN, ""+name);
		jcVideoPlayerStandard.startPlayLogic();  // 开始自动播放
		
		// 视频的回退按钮设置点击事件
		jcVideoPlayerStandard.backButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View view) {
				jcVideoPlayerStandard.release(); // 释放视频
				startActivity(new Intent(JCPlayerActivity.this, MainActivity.class)); // 跳转到上层界面
				JCPlayerActivity.this.finish(); // 结束当前界面
			}
		});
	}
	
	@Override
	protected void onDestroy() {
		JCVideoPlayer.releaseAllVideos();
		super.onDestroy();
	}
}

至于对应的xml布局文件就很简单了,如下所示。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
        android:id="@+id/jiecao_player_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>



其实jiecao的使用比较简单,一句代码就可以播放视频了


jcVideoPlayerStandard.setUp(path, JCVideoPlayerStandard.SCREEN_WINDOW_FULLSCREEN, ""+name);

不过在实际使用中肯定不止这么简单,哈哈,至于细节问题,大家可以自己多多去研究。

记得在onDestroy方法中调用releaseAllVideos()方法释放视频资源。

@Override
	protected void onDestroy() {
		JCVideoPlayer.releaseAllVideos();
		super.onDestroy();
	}