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.mfbz.cn/a/796572.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

集成excel工具:自定义导入监听器、自定义类型转换器、web中的读

文章目录 I 封装导入导出1.1 定义工具类1.2 自定义读监听器: 回调业务层处理导入数据1.3 定义文件导入上下文1.4 定义回调协议II 自定义转换器2.1 自定义枚举转换器2.2 日期转换器2.3 时间、日期、月份之间的互转2.4 LongConverterIII web中的读IV 其他注意事项应用场景:导入…

Canvas:实现在线动态时钟效果

想象一下,用几行代码就能创造出如此逼真的图像和动画,仿佛将艺术与科技完美融合,前端开发的Canvas技术正是这个数字化时代中最具魔力的一环,它不仅仅是网页的一部分,更是一个无限创意的画布,一个让你的想象…

万界星空科技MES系统:食品加工安全的实时监控与智能管理

万界星空科技MES系统通过集成多种技术和功能,能够实时监控食品加工过程中各环节的安全风险。以下是对该系统如何实现实时监控的详细分析: 一、集成传感器和数据分析技术 万界星空科技MES系统利用集成的传感器和数据分析技术,实时监控生产过程…

c++ - 多态

文章目录 一、多态的概念二、多态使用三、多态的原理 一、多态的概念 1、概念: 多态就是具有多种形态,可以理解为同一个行为不同对象去完成表现出不同的状态,如: 二、多态使用 1、构成多态的条件 (1)派…

硬件开发笔记(二十五):AD21导入电解电容原理图库、封装库和3D模型

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140344547 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

[DiT] Scalable Diffusion Models with Transformers

1、目的 用transformer来替代U-Net backbone,提升生成效果 2、方法 Diffusion Transformers (DiTs) 1)结构 Latent Diffusion Models (LDMs) -> Transformer (Vision Transformer, ViT) based DDPM -> off-the-shelf convolutional VAE 2&#xf…

Navicat使用教程——连接/新建数据库、SQL实现表的创建/数据插入、解决报错【2059-authentication plugin‘caching_sha2_password’……】

一、连接数据库 以MySQL为例 1、新建连接 (1)点击“文件”“新建连接”“MySQL” (2)根据需要,自定义连接名,输入安装MySQL时的密码,点击“连接测试”,确定是否可以连接 &#xf…

【企业级监控】Zabbix实现邮箱报警

Zabbix监控自动化 文章目录 Zabbix监控自动化资源列表基础环境前言四、Zabbix邮件告警4.1、实现报警所需的条件4.1.1、告警媒介4.1.2、触发器(trigger)4.1.3、动作(action) 4.2、配置告警媒介4.2.1、设置告警媒介参数4.2.2、启用此…

秋招Java后端开发冲刺——Mybatis使用总结

一、基本知识 1. 介绍 MyBatis 是 Apache 的一个开源项目,它封装了 JDBC,使开发者只需要关注 SQL 语句本身,而不需要再进行繁琐的 JDBC 编码。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java POJO(Plain …

【提交ACM出版 | EIScopus检索稳定 | 高录用】第五届大数据与社会科学国际学术会议(ICBDSS 2024,8月16-18)

第五届大数据与社会科学国际学术会议(ICBDSS 2024)将于2024年08月16-18日在中国-上海隆重举行。 ICBDSS会议在各专家教授的支持下,去年已成功举办了四届会议。为了让更多的学者有机会参与会议分享交流经验。本次会议主要围绕“大数据”、“社…

小浣熊素材 - 分析博客文章分布

我上传的 Excel,第一列为文章标题,请你分析这个 Excel 里总共的文章数量,并且根据文章标题,智能地将这些文章进行归类,然后绘制出饼状图,展示每一类的文章,占文章总数的百分比。 自己的 Pytho…

51单片机STC89C52RC——17.1 红外线遥控器

目的/效果 LCD1602显示红外遥控按键值 一,STC单片机模块 二,红外线遥控器 2.1 简介 人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。 光的波长和频率如下图 红外遥控是利用红外光进行通信的设备&#xff0…

程序的控制结构——switch语句【互三互三】

文章目录 🍁 引言 🍁1.语句格式: 🍁2.语句执行过程 🍁3.语句格式举例 🍁例题 👉【例1】 🚀示例代码 👉【例2】 🚀【分析】 🚀示例代码…

【linux】进程间通信(IPC)——匿名管道,命名管道与System V内核方案的共享内存,以及消息队列和信号量的原理概述

目录 ✈必备知识 进程间通信概述 🔥概述 🔥必要性 🔥原理 管道概述 🔥管道的本质 🔥管道的相关特性 🔥管道的同步与互斥机制 匿名管道 🔥系统调用接口介绍 🔥内核原理 …

如何搞定美国TikTok直播网络?

在全球范围内,TikTok已经积累了超过30亿次的下载量,月活跃用户达到13亿以上,支持75种语言,覆盖了150多个国家和地区。这一庞大的流量池吸引了众多国内电商人尝试在TikTok上进行业务拓展。本文将探讨如果要在美国运营TikTok直播&am…

Kithara与OpenCV (一)

Kithara使用 OpenCV 库 目录 Kithara使用 OpenCV 库简介需求和支持的环境构建 OpenCV 库使用 CMake 进行配置以与 Kithara 一起工作 使用 OpenCV 库设置项目运行 OpenCV 代码图像采集和 OpenCV自动并行化限制和局限性1.系统建议2.实时限制3.不支持的功能和缺失的功能4.显示 Ope…

彻底搞懂JVM垃圾回收

哈喽,大家好🎉,我是世杰。 欢迎大家关注我的公众号『程序员世杰』获取更多后端技术干货🎉🎉! 本文我为大家介绍「JVM垃圾回收那些事」 面试连环call 如何判断对象是否应被回收?finalize方法的实现机制是什么?如何判…

触摸屏虚拟键盘组件 jQuery Virtual Keyboard使用 自定义键盘

如何在触摸设备上为输入域添加虚拟键盘? 一个插件可以解决这个问题,关键还支持高度自定义(git地址): GitHub - Mottie/Keyboard: Virtual Keyboard using jQuery ~ 官网地址:Virtual Keyboard 使用步骤&…

Photoshop

彩色转灰度:ctrlshiftu 背景转黑色: 魔术棒容差10 shift连选 shiftF5(填充)钢笔选择 路径 工作路径 将路径作为选区载入 点回图层 按ctrlx删除选区 待更新

如何找回误删的文件?4个常用文件恢复方法!

对于许多用户来说,误删文件是一种常见而令人懊恼的情况。恢复误删文件的重要性在于,它可以帮助用户找回宝贵的数据,避免因数据丢失带来的各种不便和损失。 如何找回不小心删除的文件? 误删数据不知道怎么恢复,会给我…