Jump to content

ste-phil

Verified Members
  • Posts

    9
  • Joined

  • Last visited

Posts posted by ste-phil

  1. Hi, I was able to make a sample which is based on the hello_xr project from OpenXR. Unfortunately the project was too big to upload here, so I put it on a WeTransfer https://we.tl/t-G7tnwnSVD2 where you can download it.

     

    Run the project:

    • Open the android studio project located in the folder "OpenXR-SDK-Source\src\tests\hello_xr". 
    • If you want to switch to a single activity workflow to test the behaviour, just use the PlayerActivity as the Main/Launch Activity.

     

    If you need any further information please let me know!

    Thanks for the help.

  2. Hi,

    thanks for the answer!

    I am not using any SDK since I am making a native Android application. As far as I understand this is only required for Unity/Unreal projects. In my case, I am just using the required OpenXR Loader stated here (https://developer.vive.com/resources/openxr/unity/download/latest/) which then launches the already installed OpenXR Runtime already installed on the device.

    I am currently just using some modified version of the hello_xr example by Khronos and Android Studio in conjunction with the Native development stuff (NDK, Cmake, Gradle, etc..) to make an APK that installs on the device.

     

     

  3. Hello,

    I am required to develop an OpenXR application with Java/C++ that has support for Android Activity switching. I reverse engineered the HTC unity package to determine the correct stuff that needs to be in the Android Manifest file and to be able to create this in a simple android studio project.

    My project structure should look like the following. An Android application with 2 activities. The "MAIN" activity is just a 2D activity (could also be an OpenXR 'immersive' activity, depending on our future needs). This main activity is used to provide some input and latter on open the 2nd activity via an Android Intent. The second activity is basically on OpenXR application based on the hello_xr application provided by Khronos.  

    Now the issue is that when it comes to switching from the main activity to the second one. I am currently switching via a simple Intent where I specify the target activity. This all works great because it calls the android_main() of the 2nd activity and executes the code (creatiion of an openxrinstance / session / etc) until  it comes to the actual rendering of the layers where the OpenXR runtime just passes the "shouldRender = false" flag in the xrWaitFrame() (https://registry.khronos.org/OpenXR/specs/1.0/man/html/xrWaitFrame.html). This stays like that forever (tested for at least a minute), so I am assuming it dead locked somewhere. 

    Investigating logcat does not show any errors at all only a specific line that is printed forever while the screen stays black. Googling that line yields nothing so I am assuming it is something internal.

    RENDER_ATWC: Prvious PredictedDisplay:11310562046231 >= New PredictedDisplay:11310561646160, Set New PredictedDisplay to 11310561746160

     

    The application part of my android manifest looks like this: (When using the PlayerActivity as a startup activity everything works fine and the OpenXR application runs as expected)

        <application
            android:allowBackup="false"
            android:extractNativeLibs="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name">
            <activity
                android:name=".MainActivity"
                android:configChanges="screenSize|screenLayout|orientation|keyboardHidden|keyboard|navigation|uiMode|density"
                android:excludeFromRecents="false"
                android:exported="true"
                android:launchMode="singleTask"
                android:resizeableActivity="false"
                android:screenOrientation="landscape"
                android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                tools:ignore="NonResizeableActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                    <category android:name="org.khronos.openxr.intent.category.IMMERSIVE_HMD" />
                </intent-filter>
            </activity>
            <activity
                android:name=".PlayerActivity"
                android:configChanges="screenSize|screenLayout|orientation|keyboardHidden|keyboard|navigation|uiMode|density"
                android:excludeFromRecents="false"
                android:exported="true"
                android:launchMode="singleTask"
                android:resizeableActivity="false"
                android:screenOrientation="landscape"
                android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                tools:ignore="NonResizeableActivity">
    
                <!-- Tell NativeActivity the name of the .so -->
                <meta-data
                    android:name="android.app.lib_name"
                    android:value="lib-name" />
                <intent-filter>
    <!--                 <action android:name="android.intent.action.MAIN" />-->
    <!--                 <category android:name="android.intent.category.LAUNCHER" />-->
                    <category android:name="org.khronos.openxr.intent.category.IMMERSIVE_HMD" />
                </intent-filter>
            </activity>

     

    If you want the full log of one run, I could also provide that. In order to reproduce the issue, its possible to use the hello_xr sample and extend it with a new Java activity that opens the hello_xr activity.

    I would be glad to receive any input on that matter, because I have now been trying a lot of different stuff already and I have a feeling that it is somehow related to the underlying OpenXR runtime and I have no idea how to debug that.

     

     

  4. Hello,

    I am trying to build an Android app that initializes the OpenXR Runtime in C++ for the HTC Vive Focus 3

    The problem is that the application fails at the xrCreateInstance() method provided by the OpenXR loader, which should pass the requested function to the runtime.  The encountered error seems to be an access violation (SIGSEV) due to a nullptr, when trying to find the xrCreateInstance method in the runtime. (maybe the function does not exist?).

    The stacktrace of the error:

    art_sigsegv_fault 0x00000077a19766dc
    art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000077a1976be0
    art::SignalChain::Handler(int, siginfo*, void*) 0x000000566c858ec4
    __kernel_rt_sigreturn 0x0000007828ce8678
    <unknown> 0x0000007734936ae8
    RuntimeInterface::CreateInstance(const XrInstanceCreateInfo *, XrInstance_T **) runtime_interface.cpp:457
    LoaderXrTermCreateInstance(const XrInstanceCreateInfo *, XrInstance_T **) loader_core.cpp:423
    LoaderInstance::CreateInstance(XrResult (*)(XrInstance_T *, const char *, void (**)()), XrResult (*)(const XrInstanceCreateInfo *, XrInstance_T **), XrResult (*)(const XrInstanceCreateInfo *, const XrApiLayerCreateInfo *, XrInstance_T **), std::__ndk1::vector<…>, const XrInstanceCreateInfo *, std::__ndk1::unique_ptr<…> *) loader_instance.cpp:250
    LoaderXrCreateInstance(const XrInstanceCreateInfo *, XrInstance_T **) loader_core.cpp:275
    xrCreateInstance(const XrInstanceCreateInfo *, XrInstance *) loader_core.cpp:835
    main_body() list_json.cpp:137

     

    The basics steps I took were:

     

    What I already tried:

    • Created my own Android app with a Native side.
      • Error encountered.
    • Built the Android sample app by Khronos using this repo: https://github.com/KhronosGroup/OpenXR-SDK-Source.
      • Same error.
    • Enumerating the features creating the instance.
      • This works fine, the runtime lists a total 22 supported features.
    • Used a selection of different OpenXR loaders.
      • All of them encounter the same issue.
    • Running a the handtracking unity sample to see if it is an issue with the device. 
      • Works.


     

    If anybody has already done something similar I would be glad on some insight about what I might have missed. Does it maybe need some preconfiguration?

     

    Kind regards

    Philipp

     

×
×
  • Create New...