当前位置: 首页 > news >正文

Android之播放本地视频和Url视频方法

一、播放本地视频文件

根据文件路径在浏览器中播放,可用于视频预览等场景

效果:

用浏览器播放本地视频

文件路径例子:
/storage/emulated/0/Android/data/com.custom.jfrb/files/Movies/1697687179497.mp4

File file = new File("文件路径");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);Uri contentUri = FileProvider.getUriForFile(UploadVideoActivity.this, getContext().getPackageName() + ".provider", file);intent.setDataAndType(contentUri, "video/*");
} else {intent.setDataAndType(Uri.fromFile(file), "video/*");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
startActivity(intent);

二、播放Url视频(GSYVideoPlayer类的使用)

效果:

播放Url视频

1、导入依赖

implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer:v8.1.7-release-jitpack'

2、xml文件

<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayerandroid:id="@+id/video_player"android:layout_width="match_parent"android:layout_height="220dp" />

3、Activity中调用

(1) 绑定控件

@InjectView(id = R.id.video_player)
StandardGSYVideoPlayer mVideoPlayer;

(2)播放视频
视频Url例子:https://recordcdn-qk.jfdaily.com/upload/vod/user1694515885005019/1697678251135382/preview/video.mp4

//播放横屏视频boolean setUp = mVideoPlayer.setUp("视频Url", true, "名字");
//设置封面
//        if (setUp) {
//            Glide.with(this).load(productItem.getCapture()).into((ImageView) mVideoPlayer.getThumbImageView());
//        }
//隐藏自带的标题和返回键
mVideoPlayer.getTitleTextView().setVisibility(View.GONE);mVideoPlayer.getBackButton().setVisibility(View.GONE);//全屏按键
mVideoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mVideoPlayer.startWindowFullscreen(ProductDetailActivity.this,false,true);}
});
GSYVideoType.setShowType(GSYVideoType.SCREEN_TYPE_DEFAULT);
//根据视频尺寸,自动选择竖屏全屏或者横屏全屏
mVideoPlayer.setAutoFullWithSize(true);
//全屏动画
mVideoPlayer.setShowFullAnimation(true);
//开始播放
mVideoPlayer.startPlayLogic();

(3)相关生命周期中添加操作

@Overridepublic void onBackPressed() {if (GSYVideoManager.backFromWindowFull(this)){return;}super.onBackPressed();}@Overrideprotected void onResume() {super.onResume();mVideoPlayer.onVideoResume();}@Overrideprotected void onPause() {super.onPause();mVideoPlayer.onVideoPause();}@Overrideprotected void onDestroy() {super.onDestroy();GSYVideoADManager.releaseAllVideos();}

三、持续更新中…

http://www.lryc.cn/news/198368.html

相关文章:

  • 设计模式:工厂方法模式(C#、JAVA、JavaScript、C++、Python、Go、PHP):
  • C++基础——指针
  • PLC 学习day02 硬件输入/输入的知识
  • rabbitMq (2)
  • 通讯协议学习之路:RS422协议理论
  • 剪映failed to initialize,cuda.is_available()为false解决
  • 基于Spring Boot的LDAP开发全教程
  • 在 Linux 上保护 SSH 服务器连接的 8 种方法
  • 摩尔信使MThings的协议转换(数据网关)功能
  • Mac安装Kali保姆级教程
  • 利用Spring Boot框架做事件发布和监听
  • KingBase库模式表空间和客户端认证(kylin)
  • h5的扫一扫功能 (非微信浏览器环境下)
  • Typora 导出PDF 报错 failed to export as pdf. undefined 解决方案
  • [架构之路-239]:目标系统 - 纵向分层 - 中间件middleware
  • javascript利用xhr对象实现http流的comet轮循,主要是利用readyState等于3的特点
  • 【Mybatis源码】XPathParser解析器
  • 辉视智慧酒店解决方案助力传统酒店通过智能升级焕发新生
  • 文件和命令的查找与处理
  • 第七章:最新版零基础学习 PYTHON 教程—Python 列表(第三节 -Python程序访问列表中的索引和值)
  • 接口测试面试题整理​​​​​​​
  • 【保姆级教程】ChatGPT/GPT4科研技术应用与AI绘图
  • 凉鞋的 Godot 笔记 202. 变量概述与简介
  • HTML 常用标签及练习
  • Python 编程基础 | 第六章-包与模块管理 | 1、包与模块简介
  • 为中小企业的网络推广策略解析:扩大品牌知名度和曝光度
  • 资源受限MCU Flash空间占用优化
  • 冰蝎默认加密的流量解密
  • C#字符串操作:拼接、截取、分割等高效处理方法
  • 垃圾邮件(短信)分类算法实现 机器学习 深度学习 计算机竞赛