1 /*
2  * Copyright 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package androidx.xr.runtime.openxr
18 
19 import android.app.Activity
20 import androidx.annotation.RestrictTo
21 import androidx.xr.runtime.internal.Runtime
22 import androidx.xr.runtime.internal.RuntimeFactory
23 
24 /** Factory for creating instances of [OpenXrRuntime]. */
25 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
26 public class OpenXrRuntimeFactory() : RuntimeFactory {
27     public companion object {
28         init {
29             try {
30                 System.loadLibrary("androidx.xr.runtime.openxr")
31             } catch (e: UnsatisfiedLinkError) {
32                 // TODO: b/344962771 - Use Flogger instead of println.
33                 println("Failed to load library: $e")
34             }
35         }
36     }
37 
createRuntimenull38     override fun createRuntime(activity: Activity): Runtime {
39         val timeSource = OpenXrTimeSource()
40         val perceptionManager = OpenXrPerceptionManager(timeSource)
41         return OpenXrRuntime(
42             OpenXrManager(activity, perceptionManager, timeSource),
43             perceptionManager
44         )
45     }
46 }
47