【发布时间】:2014-11-02 09:12:08
【问题描述】:
我想知道如何解决“QCAR 已初始化”的问题。 假设我想创建使用在 Unity 中完成的 QCAR/Vuforia 的 Android 应用程序。 应用程序必须能够在活动之间遍历,包括用于 Vuforia 的活动。
让我们用 QCAR 来调用 Activity,QCARActivity.java
我知道QCAR只能初始化一次,所以当我们访问QCARActivity.java一次,它就能正确加载activity。
下面是QCARActivity的一段代码:
public class QCARActivity extends NativeActivity {
protected UnityPlayer mUnityPlayer;
protected QCARPlayerSharedActivity mQCARShared;
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
getWindow().takeSurface(null);
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
getWindow().setFormat(PixelFormat.RGB_565);
mUnityPlayer = new UnityPlayer(this);
if (mUnityPlayer.getSettings().getBoolean("hide_status_bar", true))
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
final int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
final boolean trueColor8888 = false;
mQCARShared = new QCARPlayerSharedActivity();
mQCARShared.onCreate(this, glesMode,
new QCARPlayerSharedActivity.IUnityInitializer() {
@Override
public void InitializeUnity() {
mUnityPlayer.init(glesMode, trueColor8888);
View playerView = mUnityPlayer.getView();
setContentView(playerView);
playerView.requestFocus();
}
});
}
//Other methods such as onDestroy, onPause, onResume will also be implemented
}
但是当我们第二次调用这个活动时,它无法加载,并且会在 Logcat 中显示“QCAR 已被初始化”。
我们可以做些什么来标记 QCAR 已经初始化?
那么如果已经初始化了,如何再次打开UnityPlayer,不初始化QCAR并正确显示呢?
我希望有人能在这方面启发我。代码示例将不胜感激。 非常感谢。
注意:目前我只知道如何通过 Unity 创建 Vuforia 应用程序,我使用 export as Google Project 方法将其提取到 Eclipse 兼容的 java 项目中。我仍然不熟悉直接使用 Android 编程 Vuforia。
【问题讨论】:
标签: java android unity3d vuforia