博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在 Android 上离线导览模型
阅读量:7049 次
发布时间:2019-06-28

本文共 1896 字,大约阅读时间需要 6 分钟。

这篇文章的原作者是 Autodesk ADN 的 Adam Nagy,以下以我简称。

对 Forge Viewer 熟悉的朋友都知道可以透过 Viewer 在任何已支持的浏览器上观看模型,当然透过 Android 上的浏览器也是可以的。但有些朋友偏好将 Forge Viewer 镶嵌到移动端应用(Native App)里,所以我们提供了这一个示例:

但在 Adnroid 上实作离线导览模型会有什么问题?主要是我们的 viewer 的代码是使用 HTTP/HTTPS 通信协议实作的,并不支持 file:// 这种档案协议,所以他没办法透过 file:// 这个协议从本地存储上载入模型文档。

但我必需从本地存储上载入模型文档要怎么办呢?针对这个问题最通常的解法是在建置一个本地的 HTTP 服务器,让 viewer 可以 HTTP/HTTPS 协议来访问模型文档,而这个方法在 Android 上也是可行的。

还有另一个可行的办法是去覆载Android应用的 WebView 元件的文档载入方式让 viewer 可以从本地存储解析模型文档,这也是今天要讨论的内容。首先,我们必需在AndroidManifest.xml里设置网络访问权限给我们的 Android 应用:

...   

在来我们必需解决针对 Forge 模型压缩文档的文档大小超过 Android 本地文档限制的问题:

在这边我们透过『把 gz 文档改名为 gz.mp3,在来把这些文档放到 WebView 的文档载入机制里』的这个方法来解决这个问题,以下是我使用的代码片段:

class ViewerWebViewClient extends WebViewClient {      Context context;    public ViewerWebViewClient(Context con) {        this.context = con;    }    public WebResourceResponse shouldInterceptRequest (WebView view,                                                       WebResourceRequest request) {        try {            Uri uri = request.getUrl();            String path = uri.getPath();            if (path.startsWith("/android_asset/")) {                try {                    AssetManager assetManager = this.context.getAssets();                    String relPath = path.replace("/android_asset/", "").replace("gz", "gz.mp3");                    InputStream stream = assetManager.open(relPath);                    return new WebResourceResponse(null, null, stream);                } catch (IOException ex) {                    String str = ex.getMessage();                }            }        } catch (Exception ex) { }        return null;    }}

不过这个方法只适用实体装置上,在 Android 的虚拟机没办法使用,因为 viewer 会尝试以 blob:file:xxx 的方式来解析模型文档,但最终会解析会失败。

本文章用到的 工程可以在这边下载:

如果想要测试本文章的内容,必需从 Autodesk Forge 服务器上下载 SVF 模型文档,可以看看 Philippe 大神的这篇博客:

一但获取 SVF 文档后,我们就可以将它方置到 Android Studio 工程的 assets/html 文件夹里。下面这张截图是在我的 Android 装置上运行的结果:

OfflineViewer

转载地址:http://efcol.baihongyu.com/

你可能感兴趣的文章
访问控制列表
查看>>
python(pexpect)自动ssh脚本
查看>>
进击的python【片首】
查看>>
JAVA解析XML
查看>>
Camtasia Studio(屏幕录制工具)
查看>>
py3中输入密码时隐藏
查看>>
Redis监控方案
查看>>
zabbix如何监控WEB应用性能
查看>>
gitLab 分支受保护设置
查看>>
Openstack 大纲
查看>>
为什么在子线程中不能更新UI的简单解释
查看>>
愚者与智者的48个差距!
查看>>
vs2015的部署以及一些其他问题
查看>>
SaltStack安装配置与远程执行测试
查看>>
我的友情链接
查看>>
安卓开发中如何给乐联网上传数据
查看>>
显示当前时间对话框
查看>>
集成测试与单元测试的联系
查看>>
Linux下安装Nrpe软件相关报错
查看>>
JSON Web Token 入门教程
查看>>