如何在同一个 Android 应用程序中混合 VR 模式和 2d 模式活动?

问题描述 投票:0回答:1

我有一个适用于 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 模式之间切换?

android virtual-reality oculusquest
1个回答
0
投票

我遇到了同样的问题,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

有人可以帮忙吗?

© www.soinside.com 2019 - 2024. All rights reserved.