GetRawObject() public method

public GetRawObject ( ) : IntPtr
return IntPtr
コード例 #1
0
        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;
        }
コード例 #2
0
ファイル: AdvertMgr.cs プロジェクト: floatyears/Decrypt
 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
         });
     }
 }
コード例 #3
0
ファイル: FacebookAndroid.cs プロジェクト: simmmis/Kill-Red
    // 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 );
        }
    }
コード例 #4
0
    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);
        }
    }
コード例 #5
0
	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
	}
コード例 #6
0
 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
 }
コード例 #7
0
ファイル: ScoreB.cs プロジェクト: Applicasa/Sample-App-Unity
 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
 }
コード例 #8
0
ファイル: Dynamic.cs プロジェクト: Applicasa/Sample-App-Unity
 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
 }
コード例 #9
0
ファイル: Colors.cs プロジェクト: Applicasa/Sample-App-Unity
 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
 }
コード例 #10
0
 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
 }
コード例 #11
0
 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
 }
コード例 #12
0
ファイル: Foo.cs プロジェクト: Applicasa/Sample-App-Unity
 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
 }
コード例 #13
0
ファイル: Chat.cs プロジェクト: Applicasa/Sample-App-Unity
 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
 }
コード例 #14
0
 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
 }
コード例 #15
0
ファイル: GameV.cs プロジェクト: Applicasa/Sample-App-Unity
 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
 }
コード例 #16
0
 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
 }
コード例 #17
0
ファイル: Skillz.cs プロジェクト: JobsSteve/3d-cave-runner
    //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;
    }
コード例 #18
0
ファイル: OpenIAB.cs プロジェクト: Kero-it/OpenIAB
		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);
	        }
		}
コード例 #19
0
ファイル: OpenIAB.cs プロジェクト: noqno/open-iab-unity
        // 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);
            }
        }
コード例 #20
0
        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);
            }
        }
コード例 #21
0
    /// <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);
        }
    }
コード例 #22
0
 private static bool isInstanceOf(AndroidJavaObject jniItem, string classJniStr)
 {
     System.IntPtr cls = AndroidJNI.FindClass(classJniStr);
     return AndroidJNI.IsInstanceOf(jniItem.GetRawObject(), cls);
 }
コード例 #23
0
ファイル: OVRManager.cs プロジェクト: edisonzhao/OculusEDU
	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
	}
コード例 #24
0
	/// <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	
	}
コード例 #25
0
ファイル: Helpshiftandroid.cs プロジェクト: toxly/unity-app
        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;
        }
コード例 #26
0
ファイル: Helpshiftandroid.cs プロジェクト: toxly/unity-app
 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;
 }
コード例 #27
0
    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;
    }
コード例 #28
0
    /// <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;
        }
    }
コード例 #29
0
ファイル: Analytics.cs プロジェクト: mr-kelly/ProjectWeak
        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;
        }
コード例 #30
0
        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);
        }
コード例 #31
0
        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.");
        }
コード例 #32
0
        public virtual bool equals(AndroidJavaObject obj)
        {
            IntPtr obj2 = (obj != null) ? obj.GetRawObject() : IntPtr.Zero;

            return(AndroidJNI.IsSameObject(this.GetProxy().GetRawObject(), obj2));
        }
コード例 #33
0
ファイル: AppsFlyer.cs プロジェクト: yanivnizan/Unity
	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);
				}
			}		
		}
	}