Forge模型转换和网页浏览在Android上的实践

发布时间:2019-06-28 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Forge模型转换和网页浏览在Android上的实践脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

大家知道AutodeskForge大部分是网络服务(webservice)的形式,在任何系统里只要能调用web service就可以使用。而网页浏览的Forge Viewer API基于WebGL技,只要支持WebGL的浏览器就能加载,包括移动端。本期来看一下AndROId上此过程的实践。

图片描述

本样例代码在:https://github.com/Autodesk-F...

该样例演示了从获取token,创建bucket,上载Android存储的文件到Forge,启动转换服务,获取转换状态,直到得到转换完毕后模型的缩略图,最后启动一个网页打开这个模型。

图片描述

三年前,此样例是基于Eclipse+ Android ADT开发。而就在2015年,Android正式宣布不再支持Android的ADT,官方支持的开发平台为Android Studio。两个平台在很多方面是类似的,但Android Studio在开发界面和工具,项目层次结构,模块依赖关系,打包方式等方面都有优化之处。这些都加快了样例代码的移植过程。这里有篇文章做了更多的对比介绍:

https://www.airpair.com/andro...

源码的ReadMe有详细的安装过程,这里有几点分享:

@H_512_23@
  • 以前的代码,当时还没有Forge JAVA SDK,所以所有对Forge服务调用和处理都是从头撰写,而现在既然有了Forge JAVA SDK,直接拿来用。
  • https://github.com/Autodesk-F...

    此SDK很好的设计了异步调用,错误处理,而且包含了大部分Forge现有的服务端口。便于拓展测试。下载SDK后,通过其它合适的方式编译得到,笔者用的是@R_360_1202@li IDEA。编译后在target文件夹得到的是所有依赖jar包。把它们拷贝到Android Studio项目中的lib文件夹。有两个jar包(httpcore-4.4.1.jar and httpclient-4.5.jar)不需要,因为高版本的Android SDK已经有新的http 调用库。

    1. SDK对Forge的调用是异步的,但这些过程不能直接在Android的主线程中执行,需要用AsyncTask封装,所以样例对每一步都做了一个AsyncTask,AsyncTask:: doInBackground,执行,然后得到结果。在以前的代码,AsyncTask:: doInBackground 得到结果后,例如token,将在对应的TextView中显示出这个字串。但移植中发现这会造成一个错误:

      Only the original threadthat created a view hierArchy can touch ITs views.

    这是因为doInBackground属于隐藏辅助线程,不能在这里对主线程的UI进行修改。经过研究,在AsyncTask::doInBackground调用publishPRogress 方法通知变化,而在AsyncTask::onProgressUpdate修改TextView

    1. 在上载模型这一步,样例设计的是从Android的扩展存储中拿文件,在开发测试中,我们需要放一些文件在仿真器(Emulator)里,不知何故,小编的Android Device Monitor无法打开,在尝试各种方式无果后,通过命令行方式Put了一些文件。也好用。

    https://stackoverflow.com/que...

    1. 最后一点挺有意思,虽然#3中放了文件,environment.getExternalStorageDirectory() 没有返回任何文件。但有关的PErmission是打开的

    <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permissionandroid:name="android.permission.mount_UNMOUNT_FILESysTEMS"/>

    以前版本并未发生此现象。经过排查,最后发现可能是从Android 6.0开始,app的有关权限并未在安装时自动根据Manifest.XMl激活,需要额外的步骤(ActivityCompat.requestPermissions)授权激活,

    https://developer.android.com...

    本样例仍旧保留了这个方法,以备用。

    1. 转换成功后,本例用新的网页框架加载模型:

    https://models.autodesk.io/vi...

    在弹出的浏览器中就可以看到模型了。

    下一步是尝试研究只用原生的WebView控件把Forge Viewer集成到app中,而不用额外的集成框架封装。

    欢迎分享您在Android开发上的宝贵经验!

    脚本宝典总结

    以上是脚本宝典为你收集整理的Forge模型转换和网页浏览在Android上的实践全部内容,希望文章能够帮你解决Forge模型转换和网页浏览在Android上的实践所遇到的问题。

    如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。