三个字的网名
论坛版主
论坛版主
  • UID38
  • 粉丝1
  • 关注0
  • 发帖数16
阅读:907回复:0

如何迁移一个Android项目

楼主#
更多 发布于:2015-09-02 10:54
如何迁移一个Android项目

   本文介绍了如何升级Vuforia 3建立的应用程序到Vuforia Android SDK5.0。下述的变化,对于Vuforia 4项目没有必要升级到vuforia 5,因为没有API或结构的变化影响这些SDK版本之间的依赖关系。但Vuforia 5引入了新的API,你可能想利用,参阅: Vuforia 5的变化

升级Vuforia 3项目到Vuforia 5

   新的示例中所有这些变化都被纳入。以下说明是基于Vuforia示例,可以根据自己的需要进行变更。

Eclipse项目的设置

   更新你的Eclipse项目设置中的QCAR_SDK_ROOT 变量,通过设置它的值为你的vuforia SDK安装新路径。
   在Eclipse中,去 Window > Preferences > Java >Build Path > Classpath Variables进行更新,例如:
C:\Development\Android\vuforia-sdk-android-3-0-9\build\java\vuforia\Vuforia.jar


Android.mk的变化
如果你有任何关于libQCAR.so在你的Android.mk文件,使用libVuforia.so取代他们。
代码的变化
如果你在你的Java应用程序代码有以下代码:


  1. System.loadLibrary( “QCAR” );
复制代码

取代QCARvuforia即:


  1. System.loadLibrary( “Vuforia” );
复制代码


   从Tracker,Trackable和TrackableResult类移除了TYPE enum,引进了Type类和某些操作,以前依靠枚举类型实现的必须使用Type类及相关API进行。

重构ImageTrackerObjectTracker

Vuforia 4引入了一个新的ObjectTracker类的,所有的跟踪类型继承的父类。
你需要改变一切ImageTracker声明为ObjectTracker。
初始化一个 Tracker


  1. QCAR::ObjectTracker* objectTracker =static_cast<QCAR::ObjectTracker*>
  2.   (trackerManager.initTracker( QCAR::ObjectTracker::getClassType() ));
复制代码

同样,从TrackerManager获得Tracker


  1. QCAR::ObjectTracker* objectTracker =static_cast<QCAR::ObjectTracker*>
  2.   (trackerManager.getTracker( QCAR::ObjectTracker::getClassType() ));
复制代码

比较TrackableResults类型:


  1. const QCAR::TrackableResult* result = state.getTrackableResult(tIdx);
  2. if (result->isOfTypeQCAR::ImageTargetResult::getClassType()))
  3. {
  4.   // Do something target-specific
  5. }
复制代码


同样,比较 Trackable 类型:


  1. const QCAR::Trackable& trackable =result.getTrackable();
  2. if (trackable.isOfTypeQCAR::ImageTarget::getClassType()))
  3. {
  4.    //Do something target-specific
  5. }
复制代码


附加说明
1. WordList::STORAGE_TYPE 和 DataSet::STORAGE_TYPE enums已经被遗弃,你需要用新的STORAGE_TYPE enum代替。( C++ => QCAR::STORAGE_TYPE,   Java =>com.qualcomm.vuforia.STORAGE_TYPE,   C# (Unity) => STORAGE_TYPE)
2. ImageTracker::resetExtendedTracking()需要应用先调用Stop。如果ImageTracker没有停止,resetExtendedTracking()将会返回错误并且没有作用。

欢迎分享

游客

返回顶部