// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using UnityEngine;
namespace Microsoft.MixedReality.WebRTC.Unity
{
public static class Android
{
///
/// Check if the Android interop layer for Android is already initialized.
///
public static bool IsInitialized { get; private set; } = false;
///
/// Initialize the MixedReality-WebRTC library interop layer for Android.
///
/// This is automatically called by the various library API functions, and
/// can be safely called multiple times (no-op after first call).
///
public static void Initialize()
{
#if !UNITY_EDITOR && UNITY_ANDROID
if (IsInitialized)
{
return;
}
// See webrtc/examples/unityplugin/ANDROID_INSTRUCTION
// Below is equivalent of this java code:
// PeerConnectionFactory.InitializationOptions.Builder builder = PeerConnectionFactory.InitializationOptions.Builder(UnityPlayer.currentActivity);
// builder.setNativeLibraryName("mrwebrtc");
// PeerConnectionFactory.InitializationOptions options = builder.createInitializationOptions();
// PeerConnectionFactory.initialize(options);
AndroidJavaClass playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
Debug.Assert(playerClass != null);
AndroidJavaObject activity = playerClass.GetStatic("currentActivity");
Debug.Assert(activity != null);
Debug.Log("Found Unity Java activity.");
AndroidJavaClass webrtcClass = new AndroidJavaClass("org.webrtc.PeerConnectionFactory");
Debug.Assert(webrtcClass != null);
AndroidJavaClass initOptionsClass = new AndroidJavaClass("org.webrtc.PeerConnectionFactory$InitializationOptions");
Debug.Assert(initOptionsClass != null);
AndroidJavaObject builder = initOptionsClass.CallStatic("builder", new object[1] { activity });
Debug.Assert(builder != null);
builder.Call("setNativeLibraryName", new object[1] { "mrwebrtc" });
AndroidJavaObject options = builder.Call("createInitializationOptions");
webrtcClass.CallStatic("initialize", new object[1] { options });
IsInitialized = true;
Debug.Log("Initialized MixedReality-WebRTC Java binding for Android.");
#endif
}
}
}