Unity实现安卓App预览图片、Pdf文件和视频的一种解决方案

一、问题背景

最近在开发app项目,其中有个需求就是需要在app软件内显示图片、pdf和视频,一开始想的解决方案是分开实现,也就是用Image组件显示图片,找一个加载pdf的插件和播放视频的插件,转念一想觉得太麻烦了,于是就想着看能不能想电脑浏览器打开图片、pdf和视频一样直接加载显示就可以了。于是就找了Unity安卓端可以渲染网页的插件,看到网上都比较推荐使用UniWebView,我也试了,有两个原因使我放弃了它,1、加载网页的流程有点繁琐,具体使用就知道了;2、安卓渲染pdf文件软件直接闪退了(致命原因)。后来经过一番测试,最终决定使用3D WebView for Android这款插件,它可以满足同一UI组件渲染图片、pdf和视频这一需求。

二、插件介绍

3DWeView for Android(适用于Android的3D WebView),很强大,可以渲染3D和2D网页,还可以交互。官网地址:vuplex官网。
在这里插入图片描述

主要功能:

  • 从指定URL或Html字符串加载网页
  • 使用HTML创建UI
  • 快速开始使用 3D WebViewPrefab 或 2D CanvasWebViewPrefab,它们渲染为 Texture2D 并处理用户交互(单击、滚动、悬停、拖动)
  • 包括针对移动设备优化的原生 2D 模式
  • 使用随附的屏幕键盘或本机键盘键入
  • 查看和创建 PDF
  • 可以实现 C# 和JavaScript的双向通信。
    反正就是挺强大的一款渲染网页的插件,具体可以到官网了解,也有非常详细的开发文档可以参考。所以用来满足我们今天的需求简直就是小菜一碟。

二、解决方案

本博客通过搭建Demo演示场景,实现App内通过3DWeView for Android打开本地地址渲染本地图片、pdf文件和视频的一种解决方案,仅供参考。

1、准备工作
  • 3D WebView for Android SDK需要开发者准备完整的Unity开发环境与Android Build Support环境
  • Unity 2018.3或更高版本
  • Android Platform 5+
2、搭建测试场景

1、新建项目和场景,将sdk导入都项目工程中,创建Canvas,从Vuplex–WebView–Core–Prefabs–Resources文件夹下将
CanvasWebViewPrefab预制体拖入到Canvas下,再新建三个按钮,分别用来测试点击打开图片、pdf和视频的。
在这里插入图片描述
2、因为这里使用的是2D界面来显示网页,所有主要勾选CanvasWebViewPrefab下的Native 2D Mode(它将允许你操作网页试图,如双指缩放等…)
在这里插入图片描述

3、编写测试代码

测试demo主要测试加载本地图片、pdf和视频渲染在网页上,主要测试代码如下:

using UnityEngine;
using UnityEngine.UI;
using Vuplex.WebView;public class TestWeb : MonoBehaviour
{//获取到CanvasWebViewPrefab 的引用,主要用于渲染网页public CanvasWebViewPrefab webPrefab;public Button openPicture;public Button openPdf;public Button openVideo;void Start(){openPicture.onClick.AddListener(() =>{string url = "streaming-assets://File/画板.png";webPrefab.WebView.LoadUrl(url);});openPdf.onClick.AddListener(() =>{string url = "streaming-assets://File/数据结构与算法.pdf";webPrefab.WebView.LoadUrl(url);});openVideo.onClick.AddListener(() =>{string url = "streaming-assets://File/M09-1317.mp4";webPrefab.WebView.LoadUrl(url);});}
}

在这里插入图片描述
将脚本挂载到任意场景中游戏对象上,将相关对象引用分别赋值,由于这是Android,所有编辑器运行看不到效果,需要发布成apk文件。

4、发布apk测试

1、渲染图片成功
请添加图片描述

2、渲染pdf成功请添加图片描述

3、渲染视频成功
请添加图片描述

三、总结

1、3D WebView是一款十分强大的网页渲染插件,用于加载文件显示简直就是大材小用,可以多去官网学习学习其他用法。3DWebView for Android官方开发文档
2、它还可以加载其他文件夹下的文件,也可以打开网上的在线资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器控制台打印日志的方法汇总

目录 console.table用法 打印数组 打印对象 打印数组对象 打印数组对象里的指定字段 console.count用法 不传参打印 传参打印 console.warn用法 打印文本 打印对象 console.error用法 打印文本 打印对象 console.assert用法 打印文本 打印对象 consol…

AI视频创作一条龙!达摩院“寻光”平台炸场WAIC,突破可控编辑难题

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践,基于大语言模型和RAG技术,集合海量工业领域生态资源方优质产品和知识服务,旨在通过智能搜索、连续交互,实时生成个性化的内容…

开源模型应用落地-FastAPI-助力模型交互-进阶篇(一)

一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理,使应用程序能够处理各种不同的请求场景,提高应用程序的灵活性和可扩展性。 在数据验证和转换方面,高级用法提供了更精细和准确的控制&#…

Leetcode 3209. Number of Subarrays With AND Value of K

Leetcode 3209. Number of Subarrays With AND Value of K 1. 解题思路2. 代码实现 题目链接:3209. Number of Subarrays With AND Value of K 1. 解题思路 这一题的话整体上是一个滑动窗口的思路,我们维护一个滑动窗口,确保其每一个窗口都…

『大模型笔记』你需要的不是智能体,而是一个适合 AI 的工作流

你需要的不是智能体,而是一个适合 AI 的工作流 文章目录 一. 你需要的不是智能体,而是一个适合 AI 的工作流1. 不要将 AI 的解决方案局限在人类现有的解决方案上2. 不必完全依赖 AI 做决策,而是让 AI 辅助做决策或者做简单的决策3. 结合不同领域的 AI 模型或者工具,设计合适…

RedHat运维-Linux文本操作基础-SED基础

1. 打印出/etc/passwd的第12行的命令为_______________________________________; 2. 打印出/etc/passwd的第12到第18行的命令为________________________________________; 3. 打印出/etc/passwd的总行数的命令为_____________________________________…

低代码研发项目管理流程优化:提效与创新的双重驱动

随着信息技术的迅猛发展,软件项目的规模和复杂度日益增加,传统的软件开发方式已经难以满足快速迭代和高效交付的需求。在这一背景下,低代码平台应运而生,以其高效、灵活、易用的特点,迅速成为软件行业的新宠。然而&…

运行pip出现UnicodeDecodeError: ‘ascii‘ codec can‘t decode

错误: UnicodeDecodeError: ascii codec cant decode byte 0xe2 in position 1025: ordinal not in range(128) ERROR: Exception: Traceback (most recent call last):File "/usr/local/lib/python3.6/dist-packages/pip/_internal/cli/base_command.py", line 22…

C语言下结构体、共用体、枚举类型的讲解

主要内容 结构体结构体数组结构体指针包含结构体的结构链表链表相关操作共用体枚举类型 结构体 结构体的类型的概念 结构体实现步骤 结构体变量的声明 struct struct 结构体名{ 数据类型 成员名1; 数据类型 成员名2; ..…

PostgreSQL的pg_bulkload工具

PostgreSQL的pg_bulkload工具 pg_bulkload 是一个针对 PostgreSQL 提供高性能批量数据加载的工具。相较于内置的 COPY 命令,pg_bulkload 更加灵活并且在许多情况下性能更高。它支持数据的强制加载、数据过滤、数据转换以及错误处理等多种功能,非常适合需…

qt hasPendingDatagrams() 函数

hasPendingDatagrams 是 Qt 框架中 QUdpSocket 类的一个方法,用于检查是否有待处理的数据报到达。在 UDP 通信中,数据以数据报的形式发送,而 QUdpSocket 类提供了用于接收和处理这些数据报的功能。 功能描述 hasPendingDatagrams() 方法用于…

从数据到洞察:DataOps加速AI模型开发的秘密实践大公开!

作者 | 代立冬,白鲸开源科技联合创始人&CTO 引言 在AI驱动的商业世界中,DataOps作为连接数据与洞察的桥梁,正迅速成为企业数据战略的核心。 在WOT全球技术创新大会2024北京站,白鲸开源联合创始人&CTO 代立冬 在「大数据…

严重的OpenSSH漏洞威胁数百万Linux系统

Qualys威胁研究部门(TRU)发现了OpenSSH服务器 (sshd) 中的一个严重漏洞,可能影响全球超过 1400 万个Linux系统。该漏洞被指定为 CVE-2024-6387,允许在基于 glibc 的 Linux 系统上以 root 权限进行远程未经身份验证的代码执行 (RCE)。 此漏洞源于信号处理…

自己写个简单的vite插件

需求:根据使用环境显示对应的标题和icon 先在根目录建个plugins/vite-plugin-title-html.ts 文件内容如下: /*** 替换html里面的标题和icon*/ type HtmlTemplate {title?: string,icon?: string } export default function vitePluginHtmlTitle({ title, icon…

Python 处理Excel 文件, openpyxl 库的使用:

下载&#xff1a; pip install openpyxl 基本使用&#xff1a; 新建一个Excel 工作簿&#xff1a; 使用openpyxl 需要先导入一个Workbook 类&#xff0c; 使用它可以创建一个Workbook<工作簿>对象&#xff0c; 也就是创建一个Excel表文件&#xff0c; web.active 可用来…

智能体重秤pcba方案

智能体重秤应用系统由硬件和软件两部分组成。硬件是指微控制器、扩展存储器、扩展输入输出设备等。软件是各种工作过程的通用名称。硬件和软件只有紧密协调&#xff0c;才能提高系统的性价比。从硬件设计开始&#xff0c;应考虑相应软件的设计方法&#xff0c;软件的设计是基于…

代码随想录算法训练营:26/60

非科班学习算法day26 | LeetCode491:非递减子序列 &#xff0c;Leetcode46:全排列 &#xff0c;Leetcode47:全排列|| 介绍 包含LC的两道题目&#xff0c;还有相应概念的补充。 相关图解和更多版本&#xff1a; 代码随想录 (programmercarl.com)https://programmercarl.com/…

5款好用公司监控软件分享|管理者必看

当今社会&#xff0c;企业数据安全和员工工作效率成为了管理者不可忽视的重要议题。 选择合适的公司监控软件&#xff0c;不仅有助于提升管理效率&#xff0c;还能有效保障企业信息安全。 下面小编将为您分享五款备受好评的公司监控软件&#xff0c;助力管理者更好地管理企业…

C# Winform权限、用户和菜单开发的顺序和注意点

在C# Winform应用程序中&#xff0c;开发权限、用户和菜单功能通常遵循一定的顺序和注意点&#xff0c;以确保功能的连贯性和安全性。下面是一个推荐的开发流程及其注意事项&#xff1a; 开发流程 1. 数据库设计 用户表&#xff1a;存储用户基本信息&#xff0c;如用户名、密…

vue使用HMAC-SHA256签名算法

在 Vue.js 应用中生成签名算法通常涉及以下几个步骤&#xff1a; 收集数据&#xff1a;获取需要签名的数据。整理数据&#xff1a;根据协议或需求对数据进行排序、拼接、编码等处理。计算签名&#xff1a;使用密钥和算法&#xff08;如 HMAC-SHA256&#xff09;计算签名。附加…