private AndroidJavaObject CreateJavaHashMap(Dictionary<string, string> storeKeys) { var j_HashMap = new AndroidJavaObject("java.util.HashMap"); IntPtr method_Put = AndroidJNIHelper.GetMethodID(j_HashMap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); if (storeKeys != null) { object[] args = new object[2]; foreach (KeyValuePair<string, string> kvp in storeKeys) { using (AndroidJavaObject k = new AndroidJavaObject("java.lang.String", kvp.Key)) { using (AndroidJavaObject v = new AndroidJavaObject("java.lang.String", kvp.Value)) { args[0] = k; args[1] = v; AndroidJNI.CallObjectMethod(j_HashMap.GetRawObject(), method_Put, AndroidJNIHelper.CreateJNIArgArray(args)); } } } } return j_HashMap; }
public static void trackEvent(string eventStr, Hashtable chnlDetail) { using (AndroidJavaObject androidJavaObject = new AndroidJavaObject("java.util.HashMap", new object[0])) { IntPtr methodID = AndroidJNIHelper.GetMethodID(androidJavaObject.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] array = new object[2]; foreach (DictionaryEntry dictionaryEntry in chnlDetail) { using (AndroidJavaObject androidJavaObject2 = new AndroidJavaObject("java.lang.String", new object[] { dictionaryEntry.Key })) { using (AndroidJavaObject androidJavaObject3 = new AndroidJavaObject("java.lang.String", new object[] { dictionaryEntry.Value })) { array[0] = androidJavaObject2; array[1] = androidJavaObject3; AndroidJNI.CallObjectMethod(androidJavaObject.GetRawObject(), methodID, AndroidJNIHelper.CreateJNIArgArray(array)); } } } AdvertMgr.callSdkApi("trackEvent", new object[] { eventStr, androidJavaObject }); } }
// Calls a custom Graph API method with the key/value pairs in the Dictionary. Pass in a null dictionary if no parameters are needed. public static void graphRequest( string graphPath, string httpMethod, Dictionary<string,string> parameters ) { if( Application.platform != RuntimePlatform.Android ) return; // load up the Bundle using( var bundle = new AndroidJavaObject( "android.os.Bundle" ) ) { var putStringMethod = AndroidJNI.GetMethodID( bundle.GetRawClass(), "putString", "(Ljava/lang/String;Ljava/lang/String;)V" ); var args = new object[2]; // add all our dictionary elements into the Bundle if( parameters != null ) { foreach( var kv in parameters ) { args[0] = new AndroidJavaObject( "java.lang.String", kv.Key ); args[1] = new AndroidJavaObject( "java.lang.String", kv.Value ); AndroidJNI.CallObjectMethod( bundle.GetRawObject(), putStringMethod, AndroidJNIHelper.CreateJNIArgArray( args ) ); } } // call off to java land _facebookPlugin.Call( "graphRequest", graphPath, httpMethod, bundle ); } }
public void logEvent(string eventId, Dictionary<string, string> parameters) { using(AndroidJavaObject obj_HashMap = new AndroidJavaObject("java.util.HashMap")) { // Call 'put' via the JNI instead of using helper classes to avoid: // "JNI: Init'd AndroidJavaObject with null ptr!" IntPtr method_Put = AndroidJNIHelper.GetMethodID(obj_HashMap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] args = new object[2]; foreach(KeyValuePair<string, string> kvp in parameters) { using(AndroidJavaObject k = new AndroidJavaObject("java.lang.String", kvp.Key)) { using(AndroidJavaObject v = new AndroidJavaObject("java.lang.String", kvp.Value)) { args[0] = k; args[1] = v; AndroidJNI.CallObjectMethod(obj_HashMap.GetRawObject(), method_Put, AndroidJNIHelper.CreateJNIArgArray(args)); } } } cls_FlurryAgent.CallStatic("logEvent", eventId, obj_HashMap); } }
public AudioCallConnection(GameObject obj) : base() { #if UNITY_EDITOR audioCallConnection = new AndroidJavaObject(IntPtr.Zero); #elif UNITY_ANDROID audioCallConnection = bridge.Call<AndroidJavaObject>("audioCallConnection", obj.name); Debug.Log("audioCallConnection: "+audioCallConnection.GetRawObject()); //showMessage("I call ShowMessage!"); #endif }
public VirtualGoodCategory() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaVirtualGoodCategory==null) javaUnityApplicasaVirtualGoodCategory = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaVirtualGoodCategory"); innerVirtualGoodCategoryJavaObject = new AndroidJavaObject("com.applicasa.VirtualGoodCategory.VirtualGoodCategory"); innerVirtualGoodCategory = innerVirtualGoodCategoryJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerVirtualGoodCategory = ApplicasaVirtualGoodCategory(); #endif }
public ScoreB() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaScoreB==null) javaUnityApplicasaScoreB = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaScoreB"); innerScoreBJavaObject = new AndroidJavaObject("com.applicasa.ScoreB.ScoreB"); innerScoreB = innerScoreBJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerScoreB = ApplicasaScoreB(); #endif }
public Dynamic() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaDynamic==null) javaUnityApplicasaDynamic = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaDynamic"); innerDynamicJavaObject = new AndroidJavaObject("com.applicasa.Dynamic.Dynamic"); innerDynamic = innerDynamicJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerDynamic = ApplicasaDynamic(); #endif }
public Colors() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaColors==null) javaUnityApplicasaColors = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaColors"); innerColorsJavaObject = new AndroidJavaObject("com.applicasa.Colors.Colors"); innerColors = innerColorsJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerColors = ApplicasaColors(); #endif }
public Achievments() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaAchievments==null) javaUnityApplicasaAchievments = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaAchievments"); innerAchievmentsJavaObject = new AndroidJavaObject("com.applicasa.Achievments.Achievments"); innerAchievments = innerAchievmentsJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerAchievments = ApplicasaAchievments(); #endif }
public DataManager() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaDataManager==null) javaUnityApplicasaDataManager = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaDataManager"); innerDataManagerJavaObject = new AndroidJavaObject("com.applicasa.DataManager.DataManager"); innerDataManager = innerDataManagerJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerDataManager = ApplicasaDataManager(); #endif }
public Foo() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaFoo==null) javaUnityApplicasaFoo = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaFoo"); innerFooJavaObject = new AndroidJavaObject("com.applicasa.Foo.Foo"); innerFoo = innerFooJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerFoo = ApplicasaFoo(); #endif }
public Chat() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaChat==null) javaUnityApplicasaChat = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaChat"); innerChatJavaObject = new AndroidJavaObject("com.applicasa.Chat.Chat"); innerChat = innerChatJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerChat = ApplicasaChat(); #endif }
public ThirdPartyAction() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaThirdPartyAction==null) javaUnityApplicasaThirdPartyAction = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaThirdPartyAction"); innerThirdPartyActionJavaObject = new AndroidJavaObject("com.applicasa.ThirdPartyAction.ThirdPartyAction"); innerThirdPartyAction = innerThirdPartyActionJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerThirdPartyAction = ApplicasaThirdPartyAction(); #endif }
public GameV() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaGameV==null) javaUnityApplicasaGameV = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaGameV"); innerGameVJavaObject = new AndroidJavaObject("com.applicasa.GameV.GameV"); innerGameV = innerGameVJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerGameV = ApplicasaGameV(); #endif }
public Languages() { #if UNITY_ANDROID&&!UNITY_EDITOR if(javaUnityApplicasaLanguages==null) javaUnityApplicasaLanguages = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaLanguages"); innerLanguagesJavaObject = new AndroidJavaObject("com.applicasa.Languages.Languages"); innerLanguages = innerLanguagesJavaObject.GetRawObject(); #elif UNITY_IPHONE && !UNITY_EDITOR innerLanguages = ApplicasaLanguages(); #endif }
//helpers public static AndroidJavaObject dictionaryToHashmap(Dictionary<string, string> dict) { AndroidJavaObject hashmap = new AndroidJavaObject("java.util.HashMap"); System.IntPtr methodPut = AndroidJNIHelper.GetMethodID(hashmap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] args = new object[2]; foreach(KeyValuePair<string, string> kvp in dict) { AndroidJavaObject k = new AndroidJavaObject("java.lang.String", kvp.Key); AndroidJavaObject v = new AndroidJavaObject("java.lang.String", kvp.Value); args[0] = k; args[1] = v; AndroidJNI.CallObjectMethod(hashmap.GetRawObject(), methodPut, AndroidJNIHelper.CreateJNIArgArray(args)); } return hashmap; }
public void init(Dictionary<string, string> storeKeys=null) { if (!IsDevice()) return; using (AndroidJavaObject obj_HashMap = new AndroidJavaObject("java.util.HashMap")) { IntPtr method_Put = AndroidJNIHelper.GetMethodID(obj_HashMap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); if (storeKeys != null) { object[] args = new object[2]; foreach (KeyValuePair<string, string> kvp in storeKeys) { using (AndroidJavaObject k = new AndroidJavaObject("java.lang.String", kvp.Key)) { using (AndroidJavaObject v = new AndroidJavaObject("java.lang.String", kvp.Value)) { args[0] = k; args[1] = v; AndroidJNI.CallObjectMethod(obj_HashMap.GetRawObject(), method_Put, AndroidJNIHelper.CreateJNIArgArray(args)); } } } } _plugin.Call("init", obj_HashMap); } }
// Starts up the billing service. This will also check to see if in app billing is supported and fire the appropriate event public static void init(Dictionary<string, string> storeKeys) { if (Application.platform != RuntimePlatform.Android) { OpenIABEventManager.SendMessage("OnBillingNotSupported", "editor mode"); return; } using (AndroidJavaObject obj_HashMap = new AndroidJavaObject("java.util.HashMap")) { IntPtr method_Put = AndroidJNIHelper.GetMethodID(obj_HashMap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] args = new object[2]; foreach (KeyValuePair<string, string> kvp in storeKeys) { using (AndroidJavaObject k = new AndroidJavaObject("java.lang.String", kvp.Key)) { using (AndroidJavaObject v = new AndroidJavaObject("java.lang.String", kvp.Value)) { args[0] = k; args[1] = v; AndroidJNI.CallObjectMethod(obj_HashMap.GetRawObject(), method_Put, AndroidJNIHelper.CreateJNIArgArray(args)); } } } _plugin.Call("init", obj_HashMap); } }
public void init(Options options) { if (!IsDevice()) { // Fake init process in the editor. For test purposes OpenIAB.EventManager.SendMessage("OnBillingSupported", ""); return; } using (var j_optionsBuilder = new AndroidJavaObject("org.onepf.oms.OpenIabHelper$Options$Builder")) { var clazz = j_optionsBuilder.GetRawClass(); var objPtr = j_optionsBuilder.GetRawObject(); j_optionsBuilder.Call<AndroidJavaObject>("setDiscoveryTimeout", options.discoveryTimeoutMs) .Call<AndroidJavaObject>("setCheckInventory", options.checkInventory) .Call<AndroidJavaObject>("setCheckInventoryTimeout", options.checkInventoryTimeoutMs) .Call<AndroidJavaObject>("setVerifyMode", (int) options.verifyMode); foreach (var pair in options.storeKeys) j_optionsBuilder.Call<AndroidJavaObject>("addStoreKey", pair.Key, pair.Value); var addPreferredStoreNameMethod = AndroidJNI.GetMethodID(clazz, "addPreferredStoreName", "([Ljava/lang/String;)Lorg/onepf/oms/OpenIabHelper$Options$Builder;"); var prms = new jvalue[1]; prms[0].l = AndroidJNIHelper.ConvertToJNIArray(options.prefferedStoreNames); AndroidJNI.CallObjectMethod(objPtr, addPreferredStoreNameMethod, prms); // Build options instance var buildMethod = AndroidJNI.GetMethodID(clazz, "build", "()Lorg/onepf/oms/OpenIabHelper$Options;"); var j_options = AndroidJNI.CallObjectMethod(objPtr, buildMethod, new jvalue[0]); // UnityPlugin.initWithOptions(OpenIabHelper.Options options); var initWithOptionsMethod = AndroidJNI.GetMethodID(_plugin.GetRawClass(), "initWithOptions", "(Lorg/onepf/oms/OpenIabHelper$Options;)V"); prms = new jvalue[1]; prms[0].l = j_options; AndroidJNI.CallVoidMethod(_plugin.GetRawObject(), initWithOptionsMethod, prms); } }
/// <summary> /// 连接安卓 /// </summary> public void ConnectToAndriod() { try { UnityEngine.AndroidJavaClass unityPlayer = new UnityEngine.AndroidJavaClass("com.unity3d.player.UnityPlayer"); activity = unityPlayer.GetStatic <UnityEngine.AndroidJavaObject>("currentActivity"); javaVrActivityClass = new UnityEngine.AndroidJavaClass("com.picovr.picovrlib.VrActivity"); SetInitActivity(activity.GetRawObject(), javaVrActivityClass.GetRawClass()); canConnecttoActivity = true; CanConnecttoActivity = canConnecttoActivity; PicoVRManager.SDK.inPicovr = true; Headweartype = (int)PicoVRManager.SDK.DeviceType; SetPupillaryPoint(PupillaryPoint); model = javaVrActivityClass.CallStatic <string>("getBuildModel"); Debug.Log("model = " + model); if (model == "Pico Neo DK") { model = "Falcon"; } Debug.Log("SDK Version = " + GetSDKVersion() + ",UnityVersion=" + UnityVersion); Async = GetAsyncFlag(); useHMD = GetSensorExternal(); if (useHMD) { usePhoneSensor = false; } Debug.Log("ConnectToAndroid: useHMD = " + useHMD + ", usePhoneSensor = " + usePhoneSensor); if (model == "Falcon") { usePhoneSensor = false; useHMD = true; isFalcon = true; Debug.Log("ConnectToAndroid: useHMD = " + useHMD + ", usePhoneSensor = " + usePhoneSensor + ", isFalcon = " + isFalcon); Headweartype = (int)PicoVRConfigProfile.DeviceTypes.PicoNeo; Debug.Log("Falcon : " + Headweartype.ToString()); CallStaticMethod(javaVrActivityClass, "initFalconDevice", activity); } else { int deviceType = 0; CallStaticMethod <int>(ref deviceType, javaVrActivityClass, "readDeviceTypeFromWing", activity); Debug.Log("wingDeviceType = " + deviceType); if (deviceType != 0) { Headweartype = deviceType; } } double[] parameters = new double[5]; CallStaticMethod(ref parameters, javaVrActivityClass, "getDPIParameters", activity); ModifyScreenParameters(model, (int)parameters[0], (int)parameters[1], parameters[2], parameters[3], parameters[4]); ChangeHeadwear(Headweartype); SetAsyncModel(Async); Debug.Log("Async:" + Async.ToString() + " Headweartype: " + Headweartype.ToString()); startLarkConnectService(); } catch (AndroidJavaException e) { Debug.LogError("ConnectToAndriod------------------------catch" + e.Message); } }
private static bool isInstanceOf(AndroidJavaObject jniItem, string classJniStr) { System.IntPtr cls = AndroidJNI.FindClass(classJniStr); return AndroidJNI.IsInstanceOf(jniItem.GetRawObject(), cls); }
private void Awake() { // Only allow one instance at runtime. if (instance != null) { enabled = false; DestroyImmediate(this); return; } instance = this; System.Version netVersion = OVRPlugin.wrapperVersion; System.Version ovrVersion = OVRPlugin.version; Debug.Log("Unity v" + Application.unityVersion + ", " + "Oculus Integration v" + netVersion + ", " + "OVRPlugin v" + ovrVersion + "."); // Detect whether this platform is a supported platform RuntimePlatform currPlatform = Application.platform; isSupportedPlatform |= currPlatform == RuntimePlatform.Android; isSupportedPlatform |= currPlatform == RuntimePlatform.LinuxPlayer; isSupportedPlatform |= currPlatform == RuntimePlatform.OSXEditor; isSupportedPlatform |= currPlatform == RuntimePlatform.OSXPlayer; isSupportedPlatform |= currPlatform == RuntimePlatform.WindowsEditor; isSupportedPlatform |= currPlatform == RuntimePlatform.WindowsPlayer; if (!isSupportedPlatform) { Debug.LogWarning("This platform is unsupported"); return; } #if !UNITY_ANDROID || UNITY_EDITOR if (OVRUnityVersionChecker.hasBuiltInVR) { Debug.LogWarning("The Oculus Unity Legacy Integration is only supported in Unity 4.x releases. For Unity 5.x, please migrate to the Oculus Utilities for Unity package and use Unity's built-in VR support (available in Unity 5.1 and later)."); isVRPresent = false; } else if (!ovrIsInitialized) { //HACK: For some reason, Unity doesn't call UnitySetGraphicsDevice until we make the first P/Invoke call. OVRPluginEvent.eventBase = OVRPluginEvent.eventBase; #if !UNITY_ANDROID || UNITY_EDITOR //Handle all log messages OVR_FlushLog(OnLogMessage); #endif // If unable to load the Oculus Runtime. if (!OVRPlugin.initialized) { bool isBadWinRenderer = ((Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer) && !SystemInfo.graphicsDeviceVersion.Contains("Direct3D 11")); if (isBadWinRenderer) Debug.LogWarning("Only D3D11 is supported on Windows."); else Debug.LogWarning("Runtime is not present or no Rift attached. Running without VR."); // Runtime is not installed if ovr_Initialize() fails. isVRPresent = false; // Go monoscopic in response. monoscopic = true; } else { OVRPluginEvent.Issue(RenderEventType.InitRenderThread); isVRPresent = true; #if UNITY_EDITOR if (!OVRUnityVersionChecker.hasEditorVRSupport) { // Only allow VR in standalones. isVRPresent = false; Debug.LogWarning("VR rendering is not supported in the editor. Please update to 4.6.7p4 or build a stand-alone player."); } #endif if (netVersion.Major > ovrVersion.Major || netVersion.Major == ovrVersion.Major && netVersion.Minor > ovrVersion.Minor) { isVRPresent = false; Debug.LogWarning("Version check failed. Please make sure you are using OVRPlugin " + Ovr.Hmd.OVR_VERSION_STRING + " or newer."); } OVRPlugin.queueAheadFraction = 0f; ovrIsInitialized = true; } } SetEditorPlay(Application.isEditor); #else // UNITY_ANDROID && !UNITY_EDITOR: Start of Android init. // Android integration does not dynamically load its runtime. isVRPresent = true; // log the unity version Debug.Log( "Unity Version: " + Application.unityVersion ); // don't allow the application to run if orientation is not landscape left. if (Screen.orientation != ScreenOrientation.LandscapeLeft) { Debug.LogError("********************************************************************************\n"); Debug.LogError("***** Default screen orientation must be set to landscape left for VR.\n" + "***** Stopping application.\n"); Debug.LogError("********************************************************************************\n"); Debug.Break(); Application.Quit(); } // don't enable gyro, it is not used and triggers expensive display calls if (Input.gyro.enabled) { Debug.LogError("*** Auto-disabling Gyroscope ***"); Input.gyro.enabled = false; } // NOTE: On Adreno Lollipop, it is an error to have antiAliasing set on the // main window surface with front buffer rendering enabled. The view will // render black. // On Adreno KitKat, some tiling control modes will cause the view to render // black. if (QualitySettings.antiAliasing > 1) { Debug.LogError("*** Antialiasing must be disabled for Gear VR ***"); } // we sync in the TimeWarp, so we don't want unity // syncing elsewhere QualitySettings.vSyncCount = 0; // try to render at 60fps Application.targetFrameRate = 60; // don't allow the app to run in the background Application.runInBackground = false; // Disable screen dimming Screen.sleepTimeout = SleepTimeout.NeverSleep; if (!androidJavaInit) { AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); // Prepare for the RenderThreadInit() SetInitVariables(activity.GetRawObject(), System.IntPtr.Zero); #if USE_ENTITLEMENT_CHECK AndroidJavaObject entitlementChecker = new AndroidJavaObject("com.oculus.svclib.OVREntitlementChecker"); entitlementChecker.CallStatic("doAutomatedCheck", activity); #else Debug.Log( "Inhibiting Entitlement Check!" ); #endif androidJavaInit = true; } // We want to set up our touchpad messaging system OVRTouchpad.Create(); InitVolumeController(); // set an event delegate like this if you wish to handle events like "reorient". //SetVrApiEventDelegate( VrApiEventDefaultDelegate ); #endif // End of android init. prevEyeTextureAntiAliasing = OVRManager.instance.eyeTextureAntiAliasing; prevEyeTextureDepth = OVRManager.instance.eyeTextureDepth; prevEyeTextureFormat = OVRManager.instance.eyeTextureFormat; prevNativeTextureScale = OVRManager.instance.nativeTextureScale; prevVirtualTextureScale = OVRManager.instance.virtualTextureScale; prevMonoscopic = OVRManager.instance.monoscopic; prevHdr = OVRManager.instance.hdr; if (tracker == null) tracker = new OVRTracker(); if (display == null) display = new OVRDisplay(); else wasRecreated = true; if (input == null) input = new OVRInput(); if (resetTrackerOnLoad) display.RecenterPose(); #if !UNITY_ANDROID || UNITY_EDITOR // Except for D3D9, SDK rendering forces vsync unless you pass ovrHmdCap_NoVSync to Hmd.SetEnabledCaps(). if (timeWarp) { bool useUnityVSync = SystemInfo.graphicsDeviceVersion.Contains("Direct3D 9"); QualitySettings.vSyncCount = useUnityVSync ? 1 : 0; QualitySettings.maxQueuedFrames = 0; } #endif #if UNITY_STANDALONE_WIN if (!OVRUnityVersionChecker.hasD3D9ExclusiveModeSupport && !display.isDirectMode && SystemInfo.graphicsDeviceVersion.Contains("Direct3D 9")) { MessageBox(0, "Direct3D 9 extended mode is not supported in this configuration. " + "Please use direct display mode, a different graphics API, or rebuild the application with a newer Unity version." , "VR Configuration Warning", 0); } if (!OVRUnityVersionChecker.hasD3D11ExclusiveModeSupport && !display.isDirectMode && SystemInfo.graphicsDeviceVersion.Contains("Direct3D 11")) { MessageBox(0, "Direct3D 11 extended mode is not supported in this configuration. " + "Please use direct display mode, a different graphics API, or rebuild the application with a newer Unity version." , "VR Configuration Warning", 0); } #endif }
/// <summary> /// Awake this instance. /// </summary> void Awake() { #if (!UNITY_ANDROID || UNITY_EDITOR) //// -- UnityAndroid // create the distortion camera component and camera (only on PC) if (this.enabled) { if (GetComponent<OVRDistortionCamera>() == null) { gameObject.AddComponent<OVRDistortionCamera>(); } } //// -- UnityAndroid #endif // Get the cameras OVRCamera[] ovrcameras = gameObject.GetComponentsInChildren<OVRCamera>( true ); for (int i = 0; i < ovrcameras.Length; i++) { // assign the right and left cameras, check the camera name for outdated prefabs if(ovrcameras[i].RightEye || ( string.Compare( ovrcameras[i].name, "cameraright", true ) == 0 ) ) { ovrcameras[i].RightEye = true; SetCameras(CameraLeft, ovrcameras[i].camera); } else { SetCameras(ovrcameras[i].camera, CameraRight); } if ( ( ovrcameras[i].camera.clearFlags == CameraClearFlags.Skybox ) && ( ( ovrcameras[i].gameObject.GetComponent<Skybox>() != null ) || ( RenderSettings.skybox != null ) ) ) { HasSkybox = true; Debug.Log ( "Skybox Clear Required" ); } } if ((CameraLeft == null) || (CameraRight == null)) Debug.LogWarning("WARNING: Unity Cameras in OVRCameraController not found!"); #if (UNITY_ANDROID && !UNITY_EDITOR) // Disable screen dimming Screen.sleepTimeout = SleepTimeout.NeverSleep; Application.targetFrameRate = 60; // don't allow the app to run in the background Application.runInBackground = false; // don't enable gyro, it is not used and triggers expensive display calls if ( Input.gyro.enabled ) { Debug.LogError( "*** Auto-disabling Gyroscope ***" ); Input.gyro.enabled = false; } // don't enable antiAliasing on the main window display, it may cause // bad behavior with various tiling controls. if ( QualitySettings.antiAliasing > 1 ) { Debug.LogError( "*** Main Display should have 0 samples ***" ); } // Only perform this check when the CameraController is enabled // to allow for toggling stereo / non-stero camers for testing. if ( this.enabled ) { // Make sure there isn't an OVRDistortion camera on Android // this is done primarly to clean up old camera controller prefabs Camera[] cameras = gameObject.GetComponentsInChildren<Camera>(); for (int i = 0; i < cameras.Length; i++) { if ( (cameras[i] != CameraLeft) && ( cameras[i] != CameraRight ) ) { Debug.LogWarning("WARNING: Extra camera on OVRCameraController found!"); cameras[i].cullingMask = 0; // cull everything cameras[i].clearFlags = CameraClearFlags.Nothing; Destroy( cameras[i] ); } } } CameraLeft.depth = (int)RenderEventType.LeftEyeEndFrame; CameraRight.depth = (int)RenderEventType.RightEyeEndFrame; // When rendering monoscopic, we will use the left camera render // for both eyes. if ( Monoscopic ) { //CameraRight.enabled = false; CameraRight.cullingMask = 0; // cull everything CameraRight.clearFlags = CameraClearFlags.Nothing; } if ( !androidJavaInit ) { AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); javaVrActivityClass = new AndroidJavaClass("com.oculusvr.vrlib.VrActivity"); // Prepare for the RenderThreadInit() OVR_SetInitVariables( activity.GetRawObject(), javaVrActivityClass.GetRawClass() ); androidJavaInit = true; } InitVolumeController(); #endif }
private AndroidJavaObject convertMetadataToJavaHashMap(Dictionary<string, object> metaMap) { AndroidJavaObject meta_Hashmap = new AndroidJavaObject("java.util.HashMap"); if(metaMap != null) { IntPtr method_MetaPut = AndroidJNIHelper.GetMethodID(meta_Hashmap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] meta_args = new object[2]; meta_args[0] = meta_args[1] = null; foreach(KeyValuePair<string, object> metaKvp in metaMap) { meta_args[0] = new AndroidJavaObject("java.lang.String", metaKvp.Key); if(metaKvp.Value.GetType().ToString() == "System.String") { if (metaKvp.Value != null && metaKvp.Value.Equals("yes") || metaKvp.Value.Equals("no")) { string value = metaKvp.Value.Equals("yes") ? "true" : "false"; meta_args[1] = new AndroidJavaObject("java.lang.Boolean", value); } else { meta_args[1] = new AndroidJavaObject("java.lang.String", metaKvp.Value); } } else if (metaKvp.Key == HelpshiftSdk.HSTAGSKEY && metaKvp.Value.GetType().ToString() == "System.String[]"){ string[] tagsArray = (string[]) metaKvp.Value; AndroidJavaObject tags_ArrayList = new AndroidJavaObject("java.util.ArrayList"); IntPtr method_add = AndroidJNIHelper.GetMethodID(tags_ArrayList.GetRawClass(), "add", "(Ljava/lang/String;)Z"); object[] tags_args = new object[1]; foreach(string tag in tagsArray) { if(tag != null) { tags_args[0] = new AndroidJavaObject("java.lang.String", tag); AndroidJNI.CallBooleanMethod(tags_ArrayList.GetRawObject(), method_add, AndroidJNIHelper.CreateJNIArgArray(tags_args)); } } meta_args[1] = new AndroidJavaObject("java.util.ArrayList", tags_ArrayList); } if(meta_args[1] != null) { AndroidJNI.CallObjectMethod(meta_Hashmap.GetRawObject(), method_MetaPut, AndroidJNIHelper.CreateJNIArgArray(meta_args)); } } } Debug.Log("Returning the Hashmap : " + meta_Hashmap); return meta_Hashmap; }
private AndroidJavaObject convertToJavaHashMap(Dictionary<string, object> configD) { AndroidJavaObject config_Hashmap = new AndroidJavaObject("java.util.HashMap"); if(configD != null) { Dictionary<string, object> configDict = (from kv in configD where kv.Value != null select kv).ToDictionary(kv => kv.Key, kv => kv.Value); IntPtr method_Put = AndroidJNIHelper.GetMethodID(config_Hashmap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] args = new object[2]; args[0] = args[1] = null; foreach(KeyValuePair<string, object> kvp in configDict) { using(AndroidJavaObject k = new AndroidJavaObject("java.lang.String", kvp.Key)) { args[0] = k; if(kvp.Value != null && kvp.Value.Equals("yes") || kvp.Value.Equals("no")) { string value = kvp.Value.Equals("yes") ? "true" : "false"; args[1] = new AndroidJavaObject("java.lang.Boolean", value); } else if (kvp.Value != null) { if(kvp.Value.GetType().ToString() == "System.String") { args[1] = new AndroidJavaObject("java.lang.String", kvp.Value); } else if (kvp.Value.GetType().ToString() == "System.String[]") { string[] tagsArray = (string[]) kvp.Value; AndroidJavaObject tags_ArrayList = new AndroidJavaObject("java.util.ArrayList"); IntPtr method_add = AndroidJNIHelper.GetMethodID(tags_ArrayList.GetRawClass(), "add", "(Ljava/lang/String;)Z"); object[] tags_args = new object[1]; foreach(string tag in tagsArray) { if(tag != null) { tags_args[0] = new AndroidJavaObject("java.lang.String", tag); AndroidJNI.CallBooleanMethod(tags_ArrayList.GetRawObject(), method_add, AndroidJNIHelper.CreateJNIArgArray(tags_args)); } } args[1] = new AndroidJavaObject("java.util.ArrayList", tags_ArrayList); } else { if(kvp.Key == HelpshiftSdk.HSCUSTOMMETADATAKEY) { Dictionary<string, object> metaMap = (Dictionary<string, object>) kvp.Value; AndroidJavaObject meta_Hashmap = new AndroidJavaObject("java.util.HashMap"); IntPtr method_MetaPut = AndroidJNIHelper.GetMethodID(meta_Hashmap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] meta_args = new object[2]; meta_args[0] = meta_args[1] = null; foreach(KeyValuePair<string, object> metaKvp in metaMap) { meta_args[0] = new AndroidJavaObject("java.lang.String", metaKvp.Key); if(metaKvp.Value.GetType().ToString() == "System.String") { meta_args[1] = new AndroidJavaObject("java.lang.String", metaKvp.Value); } else if(metaKvp.Value.GetType().ToString() == "System.Int32") { meta_args[1] = new AndroidJavaObject("java.lang.Integer", metaKvp.Value); } else if(metaKvp.Value.GetType().ToString() == "System.Double") { meta_args[1] = new AndroidJavaObject("java.lang.Double", metaKvp.Value); } else if (metaKvp.Key == HelpshiftSdk.HSTAGSKEY && metaKvp.Value.GetType().ToString() == "System.String[]") { string[] tagsArray = (string[]) metaKvp.Value; AndroidJavaObject tags_ArrayList = new AndroidJavaObject("java.util.ArrayList"); IntPtr method_add = AndroidJNIHelper.GetMethodID(tags_ArrayList.GetRawClass(), "add", "(Ljava/lang/String;)Z"); object[] tags_args = new object[1]; foreach(string tag in tagsArray) { if(tag != null) { tags_args[0] = new AndroidJavaObject("java.lang.String", tag); AndroidJNI.CallBooleanMethod(tags_ArrayList.GetRawObject(), method_add, AndroidJNIHelper.CreateJNIArgArray(tags_args)); } } meta_args[1] = new AndroidJavaObject("java.util.ArrayList", tags_ArrayList); } if(meta_args[1] != null) { AndroidJNI.CallObjectMethod(meta_Hashmap.GetRawObject(), method_MetaPut, AndroidJNIHelper.CreateJNIArgArray(meta_args)); } } args[1] = new AndroidJavaObject("java.util.HashMap", meta_Hashmap); } if(kvp.Key == HelpshiftSdk.HSTAGSMATCHINGKEY) { Dictionary<string, object> tagsMatchingMap = (Dictionary<string, object>) kvp.Value; AndroidJavaObject tagsMatching_Hashmap = new AndroidJavaObject("java.util.HashMap"); IntPtr method_MetaPut = AndroidJNIHelper.GetMethodID(tagsMatching_Hashmap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] tagsMatching_args = new object[2]; tagsMatching_args[0] = tagsMatching_args[1] = null; foreach(KeyValuePair<string, object> tagsMatchKvp in tagsMatchingMap) { tagsMatching_args[0] = new AndroidJavaObject("java.lang.String", tagsMatchKvp.Key); if (tagsMatchKvp.Key == "operator" && tagsMatchKvp.Value.GetType().ToString() == "System.String") { tagsMatching_args[1] = new AndroidJavaObject("java.lang.String", tagsMatchKvp.Value); } else if (tagsMatchKvp.Key == "tags" && tagsMatchKvp.Value.GetType().ToString() == "System.String[]") { string[] tagsArray = (string[]) tagsMatchKvp.Value; AndroidJavaObject tags_ArrayList = new AndroidJavaObject("java.util.ArrayList"); IntPtr method_add = AndroidJNIHelper.GetMethodID(tags_ArrayList.GetRawClass(), "add", "(Ljava/lang/String;)Z"); object[] tags_args = new object[1]; foreach(string tag in tagsArray) { if(tag != null) { tags_args[0] = new AndroidJavaObject("java.lang.String", tag); AndroidJNI.CallBooleanMethod(tags_ArrayList.GetRawObject(), method_add, AndroidJNIHelper.CreateJNIArgArray(tags_args)); } } tagsMatching_args[1] = new AndroidJavaObject("java.util.ArrayList", tags_ArrayList); } if(tagsMatching_args[1] != null) { AndroidJNI.CallObjectMethod(tagsMatching_Hashmap.GetRawObject(), method_MetaPut, AndroidJNIHelper.CreateJNIArgArray(tagsMatching_args)); } } args[1] = new AndroidJavaObject("java.util.HashMap", tagsMatching_Hashmap); } } } if(args[1] != null) { AndroidJNI.CallObjectMethod(config_Hashmap.GetRawObject(), method_Put, AndroidJNIHelper.CreateJNIArgArray(args)); } } } } return config_Hashmap; }
public override bool SdkSocialLoginCompleted(Dictionary<string, string> loginData) { bool succeeded = false; using (AndroidJavaObject hashMap = new AndroidJavaObject("java.util.HashMap")) { if (loginData != null) { System.IntPtr hashMapPutMethodId = AndroidJNI.GetMethodID ( hashMap.GetRawClass (), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); foreach (string key in loginData.Keys) { using (AndroidJavaObject hashMapPutMethodArgKey = new AndroidJavaObject("java.lang.String", key)) { using (AndroidJavaObject hashMapPutMethodArgValue = new AndroidJavaObject ("java.lang.String", loginData [key])) { object[] args = new object[2]; args [0] = hashMapPutMethodArgKey; args [1] = hashMapPutMethodArgValue; jvalue[] hashMapPutMethodArgs = AndroidJNIHelper.CreateJNIArgArray (args); AndroidJNI.CallObjectMethod ( hashMap.GetRawObject (), hashMapPutMethodId, hashMapPutMethodArgs); } } } } succeeded = m_jniFuelSDKUnity.CallStatic<bool>("sdkSocialLoginCompleted", hashMap); } return succeeded; }
/// <summary> /// Dictionaries to map. /// </summary> /// <returns>The to map.</returns> /// <param name="dictionary">Dictionary.</param> private static AndroidJavaObject dictionaryToMap(Dictionary<string, object> dictionary) { using (AndroidJavaObject hashMap = new AndroidJavaObject("java.util.HashMap")) { if (dictionary != null) { System.IntPtr hashMapPutMethodId = AndroidJNI.GetMethodID ( hashMap.GetRawClass (), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); foreach (string key in dictionary.Keys) { using (AndroidJavaObject hashMapPutMethodArgKey = new AndroidJavaObject("java.lang.String", key)) { using (AndroidJavaObject hashMapPutMethodArgValue = new AndroidJavaObject ("java.lang.String", dictionary [key])) { object[] args = new object[2]; args [0] = hashMapPutMethodArgKey; args [1] = hashMapPutMethodArgValue; jvalue[] hashMapPutMethodArgs = AndroidJNIHelper.CreateJNIArgArray (args); AndroidJNI.CallObjectMethod ( hashMap.GetRawObject (), hashMapPutMethodId, hashMapPutMethodArgs); } } } } return hashMap; } }
private static AndroidJavaObject ToJavaHashMap(Dictionary<string, string> dic) { var hashMap = new AndroidJavaObject("java.util.HashMap"); var putMethod = AndroidJNIHelper.GetMethodID(hashMap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); var arguments = new object[2]; foreach (var entry in dic) { using (var key = new AndroidJavaObject("java.lang.String", entry.Key)) { using (var val = new AndroidJavaObject("java.lang.String", entry.Value)) { arguments[0] = key; arguments[1] = val; AndroidJNI.CallObjectMethod(hashMap.GetRawObject(), putMethod, AndroidJNIHelper.CreateJNIArgArray(arguments)); } } // end using } // end foreach return hashMap; }
public static object Unbox(AndroidJavaObject obj) { object result; if (obj == null) { result = null; } else { AndroidJavaObject androidJavaObject = obj.Call <AndroidJavaObject>("getClass", new object[0]); string b = androidJavaObject.Call <string>("getName", new object[0]); if ("java.lang.Integer" == b) { result = obj.Call <int>("intValue", new object[0]); } else if ("java.lang.Boolean" == b) { result = obj.Call <bool>("booleanValue", new object[0]); } else if ("java.lang.Byte" == b) { result = obj.Call <byte>("byteValue", new object[0]); } else if ("java.lang.Short" == b) { result = obj.Call <short>("shortValue", new object[0]); } else if ("java.lang.Long" == b) { result = obj.Call <long>("longValue", new object[0]); } else if ("java.lang.Float" == b) { result = obj.Call <float>("floatValue", new object[0]); } else if ("java.lang.Double" == b) { result = obj.Call <double>("doubleValue", new object[0]); } else if ("java.lang.Character" == b) { result = obj.Call <char>("charValue", new object[0]); } else if ("java.lang.String" == b) { result = obj.Call <string>("toString", new object[0]); } else if ("java.lang.Class" == b) { result = new AndroidJavaClass(obj.GetRawObject()); } else if (androidJavaObject.Call <bool>("isArray", new object[0])) { result = _AndroidJNIHelper.UnboxArray(obj); } else { result = obj; } } return(result); }
internal AndroidNativeControllerProvider(bool enableGyro, bool enableAccel) { Debug.Log("Initializing Daydream controller API."); int options = gvr_controller_get_default_options(); options |= enableAccel ? GVR_CONTROLLER_ENABLE_ACCEL : 0; options |= enableGyro ? GVR_CONTROLLER_ENABLE_GYRO : 0; statePtr = gvr_controller_state_create(); // Get a hold of the activity, context and class loader. AndroidJavaObject activity = GetActivity(); if (activity == null) { error = true; errorDetails = "Failed to get Activity from Unity Player."; return; } androidContext = GetApplicationContext(activity); if (androidContext == null) { error = true; errorDetails = "Failed to get Android application context from Activity."; return; } classLoader = GetClassLoaderFromActivity(activity); if (classLoader == null) { error = true; errorDetails = "Failed to get class loader from Activity."; return; } Debug.Log("Creating and initializing GVR API controller object."); api = gvr_controller_create_and_init_android(IntPtr.Zero, androidContext.GetRawObject(), classLoader.GetRawObject(), options, IntPtr.Zero); if (IntPtr.Zero == api) { Debug.LogError("Error creating/initializing Daydream controller API."); error = true; errorDetails = "Failed to initialize Daydream controller API."; return; } Debug.Log("GVR API successfully initialized. Now resuming it."); gvr_controller_resume(api); Debug.Log("GVR API resumed."); }
public virtual bool equals(AndroidJavaObject obj) { IntPtr obj2 = (obj != null) ? obj.GetRawObject() : IntPtr.Zero; return(AndroidJNI.IsSameObject(this.GetProxy().GetRawObject(), obj2)); }
public static void trackRichEvent(string eventName, Dictionary<string, string> eventValues){ using(AndroidJavaObject obj_HashMap = new AndroidJavaObject("java.util.HashMap")) { IntPtr method_Put = AndroidJNIHelper.GetMethodID(obj_HashMap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); object[] args = new object[2]; foreach(KeyValuePair<string, string> kvp in eventValues) { using(AndroidJavaObject k = new AndroidJavaObject("java.lang.String", kvp.Key)) { using(AndroidJavaObject v = new AndroidJavaObject("java.lang.String", kvp.Value)) { args[0] = k; args[1] = v; AndroidJNI.CallObjectMethod(obj_HashMap.GetRawObject(), method_Put, AndroidJNIHelper.CreateJNIArgArray(args)); } } } using(AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using(AndroidJavaObject cls_Activity = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity")) { cls_AppsFlyer.CallStatic("trackEvent",cls_Activity, eventName, obj_HashMap); } } } }