Android 节操视频播放器jiecaovideoplayer使用
Android 节操视频播放器jiecaovideoplayer使用
特点:
- 全屏时启动新
Activity
实现播放器真正的全屏功能 - 能在
ListView
、ViewPager
和ListView
、ViewPager
和Fragment
等多重嵌套模式下全屏工作 ListView
的拖拽和ViewPager
的滑动时如果划出屏幕会自动重置视频- 视频大小的屏幕适配,宽或长至少有两个对边是充满屏幕的,另外两个方向居中
- 可以在加载、暂停、播放等各种状态中正常进入全屏和退出全屏
- 根据自己应用的颜色风格换肤
- 播放MP3时显示缩略图片
- 占用空间非常小,不到50k
使用步骤:
1.添加依赖:
compile 'fm.jiecao:jiecaovideoplayer:5.5.2' glide依赖: compile 'com.github.bumptech.glide:glide:3.7.0' 2.添加权限:
<uses-permission android:name="android.permission.INTERNET"/>
3.最后在AndroidManifest.xml要进行相对应的配置
5.mainActivity文件:
public class MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);JCVideoPlayerStandard jcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.videoplayer);jcVideoPlayerStandard.setUp("http://2449.vod.myqcloud.com/2449_22ca37a6ea9011e5acaaf51d105342e3.f20.mp4\", JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL", JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL, "嫂子闭眼睛");// jcVideoPlayerStandard.thumbImageView.setImage("http://p.qpic.cn/videoyun/0/2449_43b6f696980311e59ed467f22794e792_1/640"); Glide.with(this).load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1512110035&di=43af12f288d95526943eab387ad3680a&imgtype=jpg&er=1&src=http%3A%2F%2Fi1.hdslb.com%2Fbfs%2Farchive%2Fce0bfeccf93649e3f279a9fc26a203eb70ca6d4d.jpg").into(jcVideoPlayerStandard.thumbImageView);
6.在包含播放器的Fragment或Activity的onPause()方法中调用JCVideoPlayer.releaseAllVideos()。 相对应的生命周期里面要做相对应的操作:
@Override public void onBackPressed() {if (JCVideoPlayer.backPress()) {return;}super.onBackPressed(); } @Override protected void onPause() {super.onPause();JCVideoPlayer.releaseAllVideos(); }
public class MainActivity extends AppCompatActivity implements View.OnClickListener {JCVideoPlayerStandard mJcVideoPlayerStandard;Button mTinyWindow, mAutoTinyWindow, mAboutListView, mPlayDirectly, mAboutApi, mAboutWebView,play_music;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTinyWindow = (Button) findViewById(R.id.tiny_window);mAutoTinyWindow = (Button) findViewById(R.id.auto_tiny_window);mPlayDirectly = (Button) findViewById(R.id.play_directly_without_layout);mAboutListView = (Button) findViewById(R.id.about_listview);mAboutApi = (Button) findViewById(R.id.about_api);play_music = (Button) findViewById(R.id.play_music);mAboutWebView = (Button) findViewById(R.id.about_webview);mTinyWindow.setOnClickListener(this);mAutoTinyWindow.setOnClickListener(this);mAboutListView.setOnClickListener(this);mPlayDirectly.setOnClickListener(this);mAboutApi.setOnClickListener(this);mAboutWebView.setOnClickListener(this);play_music.setOnClickListener(this);mJcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.jc_video);mJcVideoPlayerStandard.setUp("http://www.jmzsjy.com/UploadFile/微课/地方风味小吃——宫廷香酥牛肉饼.mp4", JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL, "视频播放");Picasso.with(this).load("http://img4.jiecaojingxuan.com/2016/11/23/00b026e7-b830-4994-bc87-38f4033806a6.jpg@!640_360").into(mJcVideoPlayerStandard.thumbImageView);JCVideoPlayer.setJcUserAction(new MyUserActionStandard());}@Overrideprotected void onPause() {super.onPause();JCVideoPlayer.releaseAllVideos();}@Overridepublic void onBackPressed() {if (JCVideoPlayer.backPress()) {return;}super.onBackPressed();}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.tiny_window:mJcVideoPlayerStandard.startWindowTiny();break;case R.id.auto_tiny_window:startActivity(new Intent(MainActivity.this, AutoTinyActivity.class));break;case R.id.play_directly_without_layout:startActivity(new Intent(MainActivity.this, PlayDirectlyActivity.class));break;case R.id.about_listview:startActivity(new Intent(MainActivity.this, ListViewActivity.class));break;case R.id.about_api:startActivity(new Intent(MainActivity.this, ApiActivity.class));break;case R.id.about_webview:startActivity(new Intent(MainActivity.this, WebViewActivity.class));break;case R.id.play_music:startActivity(new Intent(MainActivity.this, PlayMusicActivity.class));break;}} class MyUserActionStandard implements JCUserActionStandard {@Overridepublic void onEvent(int type, String url, int screen, Object... objects) {switch (type) {case JCUserAction.ON_CLICK_START_ICON:Log.i("USER_EVENT", "ON_CLICK_START_ICON" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_CLICK_START_ERROR:Log.i("USER_EVENT", "ON_CLICK_START_ERROR" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_CLICK_START_AUTO_COMPLETE:Log.i("USER_EVENT", "ON_CLICK_START_AUTO_COMPLETE" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_CLICK_PAUSE:Log.i("USER_EVENT", "ON_CLICK_PAUSE" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_CLICK_RESUME:Log.i("USER_EVENT", "ON_CLICK_RESUME" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_SEEK_POSITION:Log.i("USER_EVENT", "ON_SEEK_POSITION" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_AUTO_COMPLETE:Log.i("USER_EVENT", "ON_AUTO_COMPLETE" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_ENTER_FULLSCREEN:Log.i("USER_EVENT", "ON_ENTER_FULLSCREEN" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_QUIT_FULLSCREEN:Log.i("USER_EVENT", "ON_QUIT_FULLSCREEN" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_ENTER_TINYSCREEN:Log.i("USER_EVENT", "ON_ENTER_TINYSCREEN" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_QUIT_TINYSCREEN:Log.i("USER_EVENT", "ON_QUIT_TINYSCREEN" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_TOUCH_SCREEN_SEEK_VOLUME:Log.i("USER_EVENT", "ON_TOUCH_SCREEN_SEEK_VOLUME" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserAction.ON_TOUCH_SCREEN_SEEK_POSITION:Log.i("USER_EVENT", "ON_TOUCH_SCREEN_SEEK_POSITION" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserActionStandard.ON_CLICK_START_THUMB:Log.i("USER_EVENT", "ON_CLICK_START_THUMB" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;case JCUserActionStandard.ON_CLICK_BLANK:Log.i("USER_EVENT", "ON_CLICK_BLANK" + " title is : " + (objects.length == 0 ? "" : objects[0]) + " url is : " + url + " screen is : " + screen);break;default:Log.i("USER_EVENT", "unknow");break;}}}}
相关布局 activity_main.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.JCVideoPlayerStandardandroid:id="@+id/jc_video"android:layout_width="300dp"android:layout_height="300dp" />
</LinearLayout>
Android 节操视频播放器jiecaovideoplayer使用相关推荐
- Android 节操视频播放器jiecaovideoplayer自定义播放音频使用:屏蔽全屏按钮,增加倒计时,当前时间/总时间
一.屏蔽全屏按钮 找到JCVideoPlayerStandard.java文件中的代码: private void fixAudio() {if (SrcType.equalsIgnoreCase(& ...
- android 音乐视频播放器(github上十二款最著名的Android播放器开源项目)
1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Andr ...
- 实现在Android本地视频播放器开发
在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片.标题.时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获 ...
- Android本地视频播放器开发--视频解码
在上一章Android本地视频播放器开发--SDL编译编译中编译出sdl的支持库,当时我们使用的2.0,但是有些api被更改了,所以在以下的使用者中我们使用SDL1.3的库,这个库我会传上源码以及编译 ...
- 基于android的视频播放器,基于Android的视频播放器的设计与实现-.doc
基于Android的视频播放器的设计与实现- 基于Android的视频播放器的设计与实现 中 文 摘 要 如今,随着基于Android的智能手机的,.因此,设计一个基于android手机的多功能播放器 ...
- android 编译 sdl,SDL编译 - Android本地视频播放器开发_Linux编程_Linux公社-Linux系统门户网站...
在上一章 Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)[http://www.linuxidc.com/Linux/2013-06/85955p5.htm]中使用Ope ...
- Android 全景视频播放器(VR视频播放器探索二)
上次随便写着玩的 http://blog.csdn.net/ai_yong_jie/article/details/51159367 Android 全景视频播放器(VR视频播放器探索一 ...
- Android自定义视频播放器(三)
参看:Android自定义视频播放器(一):https://blog.csdn.net/zxd1435513775/article/details/81507909 参看:Android自定义视频播放 ...
- Android本地视频播放器开发--NDK编译FFmpeg
在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片.标题.时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获 ...
最新文章
- 译者招募 | 《Java编程思想》作者Bruce Eckel新作On Java 8
- Spring Boot 参考指南(运行你的应用程序)
- Wirshark 显示过滤器
- 双目立体放大!谷歌刚刚开源的这篇论文可能会成为手机双摄的新玩法
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础简介及入门配置
- Xcode中C、C++、Object-C3种语言的混编
- java arraylist_死磕 java集合之ArrayList源码分析
- [转载] Python导出Excel图表
- oracle ebs采购申请接口表,Oracle EBS BOM接口表操作.doc
- 【MicroPython ESP32】ssd1306 0.96“OLED+网络时钟
- Web安全——同源策略理解
- 红色警戒2修改器原理百科(六)
- 云原生不可变基础设施
- 线性回归--公式推导
- 1688商品详情api接口
- 产业分析:光伏产业发展路线图
- 数据挖掘(python实现)—认识数据
- TP5.1实现支付宝线下收银(扫码枪扫描用户支付宝付款码支付)
- 平面设计新手怎么构思设计?有什么技巧!
- 2020年深圳杯C题
热门文章
- 算法.动态规划 导航/数塔取数字问题
- 会员测试环境治理之路
- Eclipse Neon EGit Integration gives Exception 401 Authorization Required
- java单例模式(下)
- 利用BSCScan获取账户交易记录
- mysql按天执行分区表sql_Mysql按天自动表分区教程
- 为什么要做小程序?90%的商家不知道的好处!
- Dynamic Head: Unifying Object Detection Heads with Attentions 阅读
- 二叉树层次遍历(借助队列实现)
- 获取html元素的高,获取HTML元素的高度jQuery