你们知道,AutodeskForge大部分是网络服务(webservice)的形式,在任何系统里只要能调用web service就可使用。而网页浏览的Forge Viewer API基于WebGL技术,只要支持WebGL的浏览器就能加载,包括移动端。本期来看一下Android上此过程的实践。html
本样例源代码在:https://github.com/Autodesk-F...java
该样例演示了从获取token,建立bucket,上载Android存储的文件到Forge,启动转换服务,获取转换状态,直到获得转换完毕后模型的缩略图,最后启动一个网页打开这个模型。android
三年前,此样例是基于Eclipse+ Android ADT开发。而就在2015年,Android正式宣布再也不支持Android的ADT,官方支持的开发平台为Android Studio。两个平台在不少方面是相似的,但Android Studio在开发界面和工具,项目层次结构,模块依赖关系,打包方式等方面都有优化之处。这些都加快了样例代码的移植过程。这里有篇文章作了更多的对比介绍:git
https://www.airpair.com/andro...github
源码的ReadMe有详细的安装过程,这里有几点分享:web
https://github.com/Autodesk-F...api
此SDK很好的设计了异步调用,错误处理,并且包含了大部分Forge现有的服务端口。便于拓展测试。下载SDK后,经过其它合适的方式编译获得,笔者用的是Intelli IDEA。编译后在target文件夹获得的是全部依赖jar包。把它们拷贝到Android Studio项目中的lib文件夹。有两个jar包(httpcore-4.4.1.jar and httpclient-4.5.jar)不须要,由于高版本的Android SDK已经有新的http 调用库。android-studio
Only the original threadthat created a view hierarchy can touch its views.浏览器
这是由于doInBackground属于隐藏辅助线程,不能在这里对主线程的UI进行修改。通过研究,在AsyncTask::doInBackground调用publishProgress 方法通知变化,而在AsyncTask::onProgressUpdate修改TextView网络
https://stackoverflow.com/que...
<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...
本样例仍旧保留了这个方法,以备用。
https://models.autodesk.io/vi...
在弹出的浏览器中就能够看到模型了。
下一步是尝试研究只用原生的WebView控件把Forge Viewer集成到app中,而不用额外的集成框架封装。
欢迎分享您在Android开发上的宝贵经验!