我有一个适用于 Oculus Quest 2 的 Android 应用程序,它可以在 VR 模式下通过单个 Activity 运行。
我想添加第二个使用普通小部件而不是 VR 的活动。
我知道可以在 Oculus Quest 2 上运行非 VR Android 应用程序。如果我使用具有
MAIN
和 LAUNCHER
意图过滤器的新非 VR 活动扩展我的应用程序并保留 com.oculus.intent.category.VR
在原始 Activity 上,我可以启动应用程序并在 VR 环境中浮动的 2D 窗口中查看 UI。
但是当我
startActivity()
进行 VR 活动时,我在 logcat 中看到崩溃。
2023-08-24 10:14:49.784 27370-27784 VrRuntimeClient com.x.project I UpdateEvents: HMT was mounted
2023-08-24 10:14:49.784 27370-27784 VrRuntimeClient com.x.project I Client has lost focus.
2023-08-24 10:14:49.796 27370-27784 OsSdk com.x.project E error getting shared memory region, memory type: HeadTracker, failed with Status(-1, EX_SECURITY): 'request throttled'
2023-08-24 10:14:49.800 27370-27784 AudioCapture com.x.project I AudioCapture::PauseAudioCapture
2023-08-24 10:14:49.801 27370-27784 OsSdk com.x.project E error getting shared memory region, memory type: HeadTracker, failed with Status(-1, EX_SECURITY): 'request throttled'
2023-08-24 10:14:49.802 27370-27784 OsSdk com.x.project E error getting shared memory region, memory type: HeadTracker, failed with Status(-1, EX_SECURITY): 'request throttled'
2023-08-24 10:14:49.802 27370-27784 OsSdk com.x.project E error getting shared memory region, memory type: HeadTracker, failed with Status(-1, EX_SECURITY): 'request throttled'
2023-08-24 10:14:49.802 27370-27784 Telemetry com.x.project W [OpenXR] pose validation failure;
2023-08-24 10:14:49.803 27370-27784 libc com.x.project A Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 27784 (Thread-2), pid 27370 (arch.project)
---------------------------- PROCESS STARTED (27812) for package com.x.project ----------------------------
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A Cmdline: com.x.project
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A pid: 27370, tid: 27784, name: Thread-2 >>> com.x.project <<<
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #01 pc 0000000001562a80 /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (std::sys::unix::abort_internal::hd376a7a5dfef13f8+4)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #02 pc 0000000001558ff8 /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (rust_panic+120)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #03 pc 0000000001558e0c /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (std::panicking::rust_panic_with_hook::hae676ea4cb54d372+664)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #04 pc 0000000001558b54 /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (std::panicking::begin_panic_handler::_$u7b$$u7b$closure$u7d$$u7d$::h28e3779ad5029fec+200)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #05 pc 00000000015565a8 /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (std::sys_common::backtrace::__rust_end_short_backtrace::hcc3186f99b814c53+4)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #06 pc 00000000015588d8 /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (rust_begin_unwind+108)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #07 pc 0000000000ec790c /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (core::panicking::panic_fmt::hf634d2dad967350c+44)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #08 pc 0000000000ec7cd8 /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (core::result::unwrap_failed::heb325dbe9de0f88a+84)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #09 pc 0000000000f69078 /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (core::result::Result$LT$T$C$E$GT$::unwrap::hfaa71aa6fc424486+124)
2023-08-24 10:14:50.286 27810-27810 DEBUG pid-27810 A #10 pc 0000000000f47314 /data/app/~~7Rj4cfcqEuNaKBJTZ8lgfg==/com.x.project-BM56eOP_LGFnK7Uti4Fzdw==/base.apk (project::vr_engine::menu_exp::MenuExp::draw_inner_gl::h4b88970d936f21e9+1088)
...
需要什么额外的魔法才能在单个 Android 应用程序中在 2D 模式和 VR 模式之间切换?
我遇到了同样的问题,Google Generative AI 建议如下
fun changeToVrOculusMode(context: Context): Boolean {
val oculus = Oculus(context)
val success = oculus.initialize()
if (success) {
val activity = (context as Activity)
activity.setVrMode(true)
}
return success
}
并添加到build.gradle
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.20'
implementation 'org.oculus:oculus-java-sdk:1.20.0'
}
但是,我收到错误,找不到
org.oculus:oculus-java-sdk:1.20.0
。
有人可以帮忙吗?