android 调用系统播放器播放视频,调用系统图库查看图片,适配android 7.0以上

Android相册 实现了视频、照片混合展示 最近学习了Universal-Image-Loader这个开源库(https://github.com/nostra13/Android-Universal-Image-Loader),这个库主要是用来异步加载图片的辅助类,他可以动态加载图片,根据滑动位置实时加载,避免OOM的出现,总体而言是一个非常好用的图片加载库。关于这个库的学习,可以参考一下文章:Android 开源框架Universal-I 阅读详情

1.新建一个类并继承FileProvider类,不做其他事情

public class AppFileProvider extends FileProvider {
}

2.AndroidManifest.xml中配置

<provider
            android:name=".ui.file.view.AppFileProvider"
            android:authorities="你的包名.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

3.res文件夹下新增xml文件夹,然后添加file_paths.xml文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    tools:ignore="MissingDefaultResource">
    <files-path
        name="int_root"
        path="/" />
    <external-path
        name="ext_root"
        path="/"/>
    <external-files-path
        name="ext_file"
        path="/"/>
    />
    <external-cache-path
        name="ext_path"
        path="/"/>

    />
</paths>

4.调用系统播放器播放视频代码

private void playVideo(String filePath, Context context){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        File file = new File(filePath);
        Uri uri=null;
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
            uri = FileProvider.getUriForFile(context,"你的包名.fileprovider", file);
        }else {
            uri = Uri.fromFile(file);
        }
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(uri, "video/*");
        context.startActivity(intent);
    }

5.调用系统图库展示图片代码

private void playImage(String filePath, Context context){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        File file = new File(filePath);
        Uri uri=null;
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
            uri = FileProvider.getUriForFile(context,"你的包名.fileprovider", file);
        }else {
            uri = Uri.fromFile(file);
        }
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(uri, "image/*");
        context.startActivity(intent);
    }

在Android8上测试了,没有问题

Unity Vuforia AR开发实战:图像识别触发视频播放全流程指南 增强现实(AR)技术通过计算机视觉与传感器融合,将虚拟信息叠加到真实世界,其核心原理在于实时环境感知与精准空间定位。这项技术为交互设计带来了革命性价值,广泛应用于教育、营销、文旅等场景,实现从静态信息到动态体验的升级。在AR开发中,图像识别(Image Target)作为基础且高效的触发方式,结合视频播放能力,能快速构建直观的虚实融合应用。本文聚焦于利用成熟的Vuforia SDK与Unity引擎,深入讲解如何实现高鲁棒性的图像识别触发视频播放功能,涵盖从环境配置、资源优化到交互逻辑的完整工程实践,并针对视 阅读详情

相关推荐

FileUriExposedException in Android: How to Fix File Exposure Beyond App Boundaries

本文详细解析了Android开发中常见的FileUriExposedException异常,该错误自Android 7.0起因安全策略禁止直接使用file:// URI跨应用共享文件。文章提供了使用FileProvider的完整解决方案,包括在AndroidManifest中声明、配置file_paths.xml路径文件以及生成安全的content:// URI,并涵盖调用相机、安装APK及分享文件等实战场景,帮助开发者彻底修复此问题。

weixin_29232121的博客 542

Android——视频播放方式

Android——视屏播放

qq_43745685的博客 1964

Unity适配PICO 4 Ultra:Android 12L+外部存储权限配置与文件操作实践

在Android应用开发中,外部存储访问权限管理是保障用户数据安全和隐私的核心机制。随着Android系统版本迭代,Google引入了作用域存储(Scoped Storage)等更严格的沙箱模型,其原理在于限制应用对共享存储空间的随意访问,转而通过权限申请和标准化API进行受控操作。这一技术演进的价值在于平衡了应用功能需求与系统安全性,防止恶意软件滥用文件权限。在VR/AR开发场景下,如PICO 4 Ultra等基于高版本Android的设备,应用常需持久化日志、配置文件或用户生成内容至外部存储。本文聚焦U

tyygming的专栏 315

android 视频播放 -- 调用系统播放器

android 视频播放,视频来源有两种:一种是本地视频,一种是网络视频,对android播放来说都统一用uri来表示。 播放视频有三种处理方式: (1) 使用webview 播放 (2) 使用videoview来播放 (3) 调用系统播放器来播放 最简单的我认为是第三种。接下来说一下 第三种方式来播放。 String video = "http://www.nandudu.com/h

lue2009的专栏 9991

Unity 360°全景截图实现:原理、性能优化与实战应用

等距柱状投影是一种将球面坐标映射到二维平面的技术,其核心原理是通过经纬度与平面坐标的对应关系,将360度全景视野展开为宽高比2:1的矩形图像。在Unity引擎中,这一技术通过离屏渲染和着色器转换实现,其技术价值在于能够完整保留三维场景的沉浸感,为VR内容分享、虚拟看房、游戏关卡展示等应用场景提供了高效的视觉输出方案。通过AsyncGPUReadback等异步处理技术,开发者可以在保证流畅体验的同时,生成高质量的全景图像。本文基于Unity360ScreenshotCapture开源库,深入解析了360°全景

weixin_34183910的博客 396

【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库01

此方案可满足千万级并发需求,同时支持时序数据、知识图谱和文档数据库的高效处理,通过云原生架构实现极致弹性。​:每月约$15-20万(100节点K8s集群+数据库集群+CDN流量)1. 宠物上架/下架流程。

weixin_49199313的博客 1477

Android 播放视频的四种方法

之前的工作工作中曾经接触过一点视频播放方面的内容,最近又有所接触,索性将几种方法总结下 Android播放视频四种方法: 1、调用本地播放器播放视频 2、mediaplayer+surfaceview 3、利用videoview控件 4、webview网络播放视频 1、调用本地播放器播放视频 String path = ""; //本地视频文件路径Uri uri

木叶57的博客 1741

微信小程序修复版源码部署实战:避坑指南与流量主集成

微信小程序开发中,源码的兼容性与可部署性是项目成功的基础。随着微信官方基础库的迭代和平台规则的调整,许多老旧的源码常因接口废弃、组件变更或配置错误而无法运行,这涉及小程序框架、前后端交互及API适配等核心原理。修复版源码的价值在于解决了这些技术债,确保了项目的开箱即用,尤其对于壁纸、表情包等工具类小程序,其技术实现通常基于微信原生框架(WXML/WXSS/JS)与后端服务(如PHP、Node.js)的API对接,并集成MySQL数据库。在工程实践中,此类修复重点处理了用户授权流程(如替代已废弃的wx.get

weixin_33910759的博客 429

Android 获取相册媒体文件并轮播(图片展示、视频播放)

上面两步,基本上就实现了获取所有的数据,并且也把具体的UI框架搭起来了,那么接下来就是要分别判断媒体类型,来做不同的展示了,图片,就是普通的展示,视频,就是播放。其实,至此,走完(1)(2)(3)这三部分,基本上就完成了本文中完成的效果了,笔者在写demo的时候也基本上是遵循此顺序完成的。(2)利用Viewpagger2+fragment实现分页滑动效果,这部分可以参考这一篇。(1)Android 获取系统相册所有的图片以及视频资源。引用aar,如图(文件可从demo中获取)实现视频播放相关接口。

邵旺运的博客 2022

揭秘《出塞》UE5+AIGC高效工作流 | 从创意到成片全流程解析

李季老师(老李头儿)在第四届瑞云大赛斩获季军的作品《出塞》的完整创作流程!

UWA—简单优化,优化简单! 767

旋转矩阵的左乘与右乘

旋转矩阵左右乘的详细讲解

qq_46619194的博客 3330

安卓可视大屏寻呼台 兼容标准sip协议

兼容标准 SIP 协议,可作为监控中心、领导办公室管理主机使用,可对管理辖区内的主机和分机进行呼叫、双向对讲、监听/监视、广播喊话。支持 H.264 视频解码,可绑定摄像头,视频门禁,接受视频通话,通过话机主屏幕查看门禁端视频,实现远程开门及互联互通。千兆以太网 — 自适应 10/100/1000Mbps 网络端口,提供高速网络传输,支持 PoE 供电。现代简约的外观,高性价比的设计理念,高分辨率彩色显示屏,提供丰。英寸彩屏设计,为用户带来更好的用户体验,便捷操作,触手可及。/特性/规格有所疑问,

585

保姆级图解:HKMG工艺中的‘覆盖层’(Cap Layer)到底怎么调阈值电压?

本文深入解析了HKMG工艺中覆盖层(Cap Layer)如何精准调控阈值电压的关键技术。通过原子级精度的ALD工艺和材料选择,覆盖层在半导体制造中扮演着隐形调节器的角色,直接影响晶体管的电气特性。文章详细介绍了La2O3和Al2O3等材料的特性对比、ALD工艺的原子级控制,以及实战调试中的关键步骤和问题排查方法。

weixin_27032989的博客 496

uni-app跨平台开发:实现图片视频保存到手机相册的完整解决方案

在移动应用开发中,文件存储与权限管理是构建健壮应用的基础。其核心原理涉及操作系统对用户隐私数据的保护机制,尤其是Android的作用域存储(Scoped Storage)和iOS的Photos Framework,它们通过严格的沙盒模型和权限申请流程来管理媒体文件访问。这项技术的工程价值在于,开发者必须跨越平台差异,在尊重用户隐私的前提下,实现媒体文件从应用沙盒到公共相册的安全写入。典型的应用场景包括社交应用的内容发布、图片编辑工具的保存功能,以及任何需要将生成的媒体文件持久化到用户设备的功能。本文以uni

weixin_33937778的博客 356

IoTDB时序数据库在Windows下的保姆级安装教程(含环境变量配置避坑指南)

本文提供Apache IoTDB时序数据库在Windows系统下的详细安装与配置指南。教程涵盖从Java环境检查、软件下载解压,到环境变量配置的深度避坑,并详解了服务的启动、停止、连接测试及基础数据操作,帮助物联网开发者在Windows平台快速搭建稳定的时序数据库环境。

weixin_29275257的博客 263

Unity URP炫彩干涉效果:从薄膜干涉原理到Shader Graph实现

薄膜干涉是一种常见的光学现象,指光在透明薄膜上下表面反射后产生干涉,形成彩虹色条纹。其原理基于光程差导致的相长与相消干涉,不同波长的光被选择性增强或削弱。在计算机图形学中,这一物理现象被抽象为高效的数学模型,通过Shader编程实现动态色彩变化,为游戏和实时渲染带来独特的视觉表现力。技术实现上,常采用正弦函数结合噪声纹理来模拟色彩循环,利用法线与视角点积作为基础变量,加入噪声扰动模拟厚度不均,实现随视角变化的虹彩效果。在Unity URP渲染管线中,可通过Shader Graph可视化工具或手写HLSL代码

weixin_34026997的博客 295

android 面试题

ContextImpl.startActivity → Instrumentation.execStartActivity → AMS.startActivity → 校验权限、创建 ActivityRecord、Pause 当前 Activity → ApplicationThread.scheduleTransaction → ActivityThread.H → LaunchActivityItem → performLaunchActivity(创建 Activity、调用 onCreate)。

qq_25657125的博客 397

CAT24C16 EEPROM的I²C页写与页读底层实现

I²C是一种广泛应用于嵌入式系统的双线同步串行通信协议,其核心在于严格的时序控制、地址寻址机制与主从应答逻辑。理解I²C总线物理层(上拉电阻、SCL/SDA电气特性)、协议层(START/STOP、ACK/NACK、7位地址格式)及外设寄存器操作(如SR1状态标志、CCR时钟分频),是实现可靠通信的基础。在实际工程中,EEPROM类器件(如CAT24C16)因其非易失性、页缓冲区结构和写保护(WP)功能,成为数据持久化关键载体;其16字节页写约束、内部写周期(5–10ms)与地址指针自动递增等特性,直接决定

weixin_42591413的博客 389

从粉丝应援到专业记录:全链路活动内容生产与自动化发布技术方案

这次我们来看一个关于曾沛慈粉丝应援活动的记录项目。从标题“曾沛慈|20260627 pets看无人机应援”来看,这并非一个技术工具或开源模型,而更像是一次粉丝应援活动的记录、分享或纪念性内容。对于技术博客而言,我们的重点不是讨论活动本身,而是探讨如何利用技术手段来高效、高质量地记录、处理、传播和归档这类活动内容。本文将聚焦于从技术角度拆解一个完整的活动记录与内容生产流程,涵盖从现场拍摄、素材管理、后期处理到多渠道分发的全链路,并提供一套可落地的技术方案与工具链。 对于内容创作者、粉丝站管理者或活动记录者而言

weixin_34344403的博客 561

NotebookLM平替实测:用Open Notebook+Ollama零成本搭建私有AI知识库

本文提供了一份详细的实战指南,教你如何利用Open Notebook与Ollama,在本地零成本搭建一个功能强大且完全私有的AI知识库。通过Docker容器化部署,实现数据绝对安全、模型自由选择与离线运行,是NotebookLM等云端工具的绝佳平替方案,尤其适合注重数据隐私的教育工作者、研究者及小团队。

weixin_29052717的博客 514

华为OD机试2025C卷-双十一最大花费金额[100分](Java_Python3_C++_C语言_JsNode_Go)实现100%通过率

双十一最大花费金额 - 动态规划解法 摘要:本文介绍了华为OD机试中"双十一最大花费金额"问题的动态规划解法。该问题要求在给定N件商品价格和优惠券面额X的情况下,选择若干商品使总花费不超过X且尽可能大。核心解法采用布尔型动态规划数组,记录每个金额是否可被拼出。算法时间复杂度为O(N*X),空间复杂度为O(X)。通过倒序遍历避免重复选择同一商品,最后从X向下查找第一个可达金额作为答案。文中提供了C++和Java的实现代码,并解释了与经典0-1背包问题的关系。 关键点: 问题本质是0-1背包/子集和问题的变体

2503_91057718的博客 46

EasyAR与Unity AR开发实战:从环境搭建到性能优化全解析

增强现实(AR)技术通过计算机视觉与3D图形学,将虚拟信息叠加到真实世界,其核心原理在于实时环境感知与空间定位。这项技术为移动应用带来了全新的交互维度,在电商展示、教育培训、工业维修等领域具有广泛的应用价值。要实现稳定流畅的AR体验,关键在于选择成熟稳定的开发套件并进行合理的性能调优。本文聚焦于EasyAR SDK与Unity引擎的组合,深入探讨了图像识别、平面追踪等核心功能的实现路径,并分享了针对渲染管线适配、多目标管理及真机调试的工程实践,旨在帮助开发者高效构建高质量的移动AR应用。

weixin_34216107的博客 470

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

YCBanner轮播图

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33874713的博客 106

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

长沙红胖子Qt·西安(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...

长沙红胖子 Qt・西安,本人拥有省级科研团队从业背景,研发团队产出所有项目、产品方案和研发无分包、无外包、无AI代笔,长期深耕双一流体系高精尖技术配套研发。博客主动剥离复杂底层工况机理,专注沉淀高端、特种行业领域Qt工程化落地实战经验。所有内容均为个人梳理总结的通用性工程方法论,只输出可公开的普适技术思路。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 164万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android 视频播放的三种方法

//方法一:调用系统自带的播放器 /* Uri uri1 = Uri.parse("file://"+Environment.getExternalStorageDirectory()+"/DCIM/Camera/video.mp4"); Intent intent = new Intent(Intent.ACTION_VIEW); Log.v("U

懒惰是最大的敌人 964

android 调用系统播放器

今天,简单讲讲android如何调用手机自带的播放器。昨天,从服务器下载一个AVI的视频,下载后需要进行播放,所以想调用系统自带的播放器。但是由于很少用到,所以自己当时不知道怎么写,于是在网上查找资料,最终是解决了问题。这里记录一下。一.网上的常见调用播放器代码(存在问题)String url = "http://192.168.0.1/1.mp4" Intent intent = new Int...

谢岩的博客 1万+
上一篇: Android Data Path记录
下一篇: MediaPlayer播放assets文件夹下的音频
Ryfall
博客等级 码龄15年 30粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值