你們知道,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開發上的寶貴經驗!