Inheritance: AndroidJNIHelper, IDisposable
Example #1
2
        public static void Init()
        {
            AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            if (jc == null)
            return;

            AndroidJavaObject joactivety = jc.GetStatic<AndroidJavaObject>("currentActivity");
            if (joactivety == null)
            return;
            AndroidJavaObject context = joactivety.Call<AndroidJavaObject>("getApplicationContext");
            // 初始化HttpDns
            AndroidJavaObject joDnsClass = new AndroidJavaObject("com.tencent.msdk.dns.MSDKDnsResolver");
            Debug.Log(" WGGetHostByName ===========" + joDnsClass);
            if (joDnsClass == null)
            return;
            m_dnsJo = joDnsClass.CallStatic<AndroidJavaObject>("getInstance");
            Debug.Log(" WGGetHostByName ===========" + m_dnsJo);
            if (m_dnsJo == null)
            return;
            m_dnsJo.Call("init", context);
            // 初始化灯塔
            AndroidJavaObject joBeaconClass = new AndroidJavaObject("com.tencent.beacon.event.UserAction");
            if (joBeaconClass == null)
            return;
            m_dnsJo.Call("initUserAction", context);
        }
Example #2
0
 public Chat(IntPtr chatPtr, AndroidJavaObject chatJavaObject)
 {
     innerChat = chatPtr;
     innerChatJavaObject = chatJavaObject;
     if(javaUnityApplicasaChat==null)
         javaUnityApplicasaChat = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaChat");
 }
Example #3
0
 protected override void ConnectToActivity()
 {
     base.ConnectToActivity();
     if (cardboardActivity != null) {
       activityListener = Create("com.google.vr.platform.unity.UnityVrActivityListener");
     }
 }
	public static void CallStatic(string className, string methodName, params object[] args) {
		#if UNITY_ANDROID
		
		
		
		if(Application.platform != RuntimePlatform.Android) {
			return;
		}
		Debug.Log("AN: Using proxy for class: " + className + " method:" + methodName);
		
		try {
			
			AndroidJavaObject bridge;
			if(pool.ContainsKey(className)) {
				bridge = pool[className];
			} else {
				bridge = new AndroidJavaObject(className);
				pool.Add(className, bridge);
				
			}
			
			AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
			AndroidJavaObject act = jc.GetStatic<AndroidJavaObject>("currentActivity"); 
			
			act.Call("runOnUiThread", new AndroidJavaRunnable(() => { bridge.CallStatic(methodName, args); }));
			
			
		} catch(System.Exception ex) {
			Debug.LogWarning(ex.Message);
		}
		#endif
	}
Example #5
0
    // Use this for initialization
    public void ShareImage()
    {
        #if UNITY_ANDROID

            Application.CaptureScreenshot("/Screenshot.png");

            string destination = Application.persistentDataPath + "/Screenshot.png";
            Debug.Log (destination);
            // block to open the file and share it ------------START
            AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
            AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
            intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
            AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
            AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse","file://" + destination);
            intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"), uriObject);
            //intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), "testo");
            //intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_SUBJECT"), "SUBJECT");
            intentObject.Call<AndroidJavaObject>("setType", "image/jpeg");
            AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");

            // option one:
            currentActivity.Call("startActivity", intentObject);
        #endif
    }
    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);
        }
    }
        static OpenIAB_Android()
        {
            if (Application.platform != RuntimePlatform.Android)
            {
                STORE_GOOGLE = "STORE_GOOGLE";
                STORE_AMAZON = "STORE_AMAZON";
                STORE_SAMSUNG = "STORE_SAMSUNG";
                STORE_NOKIA = "STORE_NOKIA";
                STORE_YANDEX = "STORE_YANDEX";
                return;
            }

            AndroidJNI.AttachCurrentThread();

            // Find the plugin instance
            using (var pluginClass = new AndroidJavaClass("org.onepf.openiab.UnityPlugin"))
            {
                _plugin = pluginClass.CallStatic<AndroidJavaObject>("instance");
                STORE_GOOGLE = pluginClass.GetStatic<string>("STORE_GOOGLE");
                STORE_AMAZON = pluginClass.GetStatic<string>("STORE_AMAZON");
                STORE_SAMSUNG = pluginClass.GetStatic<string>("STORE_SAMSUNG");
                STORE_NOKIA = pluginClass.GetStatic<string>("STORE_NOKIA");
                STORE_YANDEX = pluginClass.GetStatic<string>("STORE_YANDEX");
            }
        }
Example #8
0
    public static void Update()
    {
#if UNITY_EDITOR
        // fake coordinates for the editor
        Latitude  = 34.020189;
        Longitude = -118.288791;
        return;
#endif
        var unityPlayer = new AJObject("com.unity3d.player.UnityPlayer");
        var activity    = unityPlayer.GetStatic <AJObject>("currentActivity");
        var manager     = activity.Call <AJObject>("getSystemService", "location");
        var location    = manager.Call <AJObject>("getLastKnownLocation", "gps");
        Latitude  = location.Call <double>("getLatitude");
        Longitude = location.Call <double>("getLongitude");
        return;

        /*
         * if (history.Count >= 6) history.Dequeue();
         * history.Enqueue(new Tuple
         *  {
         *      Latitude = location.Call<double>("getLatitude"),
         *      Longitude = location.Call<double>("getLongitude")
         *  }
         * );
         * UpdateAverages();
         */
    }
        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;
        }
 /// <summary>
 ///   <para>Called by the java vm whenever a method is invoked on the java proxy interface. You can override this to run special code on method invokation, or you can leave the implementation as is, and leave the default behavior which is to look for c# methods matching the signature of the java method.</para>
 /// </summary>
 /// <param name="methodName">Name of the invoked java method.</param>
 /// <param name="args">Arguments passed from the java vm - converted into AndroidJavaObject, AndroidJavaClass or a primitive.</param>
 /// <param name="javaArgs">Arguments passed from the java vm - all objects are represented by AndroidJavaObject, int for instance is represented by a java.lang.Integer object.</param>
 public virtual AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs)
 {
   object[] args = new object[javaArgs.Length];
   for (int index = 0; index < javaArgs.Length; ++index)
     args[index] = _AndroidJNIHelper.Unbox(javaArgs[index]);
   return this.Invoke(methodName, args);
 }
Example #11
0
    public static bool Connect(string address)
    {
        try
        {
            var adapter = new AJObject("android.bluetooth.BluetoothAdapter")
                          .CallStatic <AJObject>("getDefaultAdapter");
            // force enable bluetooth
            adapter.Call <bool>("enable");

            var device = adapter.Call <AJObject>("getRemoteDevice", address);
            var uuid   = new AJObject("java.util.UUID")
                         .CallStatic <AJObject>("fromString", SPP_UUID);

            var socket = device.Call <AJObject>(
                "createInsecureRfcommSocketToServiceRecord", uuid);

            socket.Call("connect");
            // at this point, connection is made, no further action necessary
            socket.Call("close");
            return(true);
        }
        catch
        {
            return(false);
        }
    }
Example #12
0
    // Initializes the class and bind with the Android platform via JNI.
    // You must always call this once whenever you needed this technology for
    // your project.
    public static void Initialize( int maxStreams )
    {
        #if UNITY_ANDROID && !UNITY_EDITOR
        m_unityActivityClass = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" );
        if( m_unityActivityClass == null )
        {
            DebugUtil.LogError( "AdnAudioBridge: Cannot bind to UnityPlayer class!" );
            return;
        }

        m_activityContext = m_unityActivityClass.GetStatic< AndroidJavaObject >( "currentActivity" );
        if( m_activityContext == null )
        {
            DebugUtil.LogError( "AdnAudioBridge: Cannot find UnityPlayer instance!" );
            return;
        }

        m_soundObject = new AndroidJavaObject( "net.andreivictor.uqsl.adnaudiobridge.AdnAudioBridge", maxStreams, 128, m_activityContext );
        if( m_soundObject == null )
        {
            DebugUtil.LogError( "AdnAudioBridge: Failed to bind with AdnAudioBridge." );
            return;
        }
        #endif //UNITY_ANDROID && !UNITY_EDITOR
    }
Example #13
0
    public void shareText()
    {
        //execute the below lines if being run on a Android device
    #if UNITY_ANDROID
        body = "Faltan " + RolCountdownController.daysRemaining + " días, " + RolCountdownController.hoursRemaining + " horas y " + RolCountdownController.minutesRemaining + " minutos para las próxima roleada!";

        //Refernece of AndroidJavaClass class for intent
        AndroidJavaClass intentClass = new AndroidJavaClass ("android.content.Intent");
        //Refernece of AndroidJavaObject class for intent
        AndroidJavaObject intentObject = new AndroidJavaObject ("android.content.Intent");
        //call setAction method of the Intent object created
        intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
        //set the type of sharing that is happening
        intentObject.Call<AndroidJavaObject>("setType", "text/plain");
        //add data to be passed to the other activity i.e., the data to be sent
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_SUBJECT"), subject);
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), body);
        //get the current activity
        AndroidJavaClass unity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
        //start the activity by sending the intent data
        currentActivity.Call ("startActivity", intentObject);
    #endif

    }
Example #14
0
	// Use this for initialization
	void Start () {
		AndroidJavaClass majcUnityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
		AndroidJavaObject majoDivePluginInstance = majcUnityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
		metricsClass= new AndroidJavaClass("android.util.DisplayMetrics");
		metricsInstance= new AndroidJavaObject("android.util.DisplayMetrics");
		windowManagerInstance=majoDivePluginInstance.Call<AndroidJavaObject>("getWindowManager");
		displayInstance=windowManagerInstance.Call<AndroidJavaObject>("getDefaultDisplay");
		
		displayInstance.Call("getMetrics",metricsInstance);
		
		density=metricsInstance.Get<float>("density");
		densitydpi=metricsInstance.Get<int> ("densityDpi");
		vpixels=metricsInstance.Get<int>("heightPixels");
		vpixels=Screen.height;
		hpixels=metricsInstance.Get<int>("widthPixels");
		//hpixels=displayInstance.Call<int>("getWidth");
		hpixels=Screen.width;
		scaledDensity=metricsInstance.Get<float>("scaledDensity");
		xdpi=metricsInstance.Get<float>("xdpi");
		ydpi=metricsInstance.Get<float>("ydpi");
		xmm=hpixels/xdpi/0.0393701f;
		ymm=vpixels/ydpi/0.0393701f;
		
		
		hpixels=Screen.width;
		vpixels=Screen.height;
		xmm=hpixels/xdpi/0.0393701f;
		ymm=vpixels/ydpi/0.0393701f;
		mmdist=xmm/2;
	}
        protected PurchasableVirtualItem(AndroidJavaObject jniVirtualItem)
            : base(jniVirtualItem)
        {
            SoomlaUtils.LogDebug(TAG, "Trying to create PurchasableVirtualItem with itemId: " +
                                jniVirtualItem.Call<string>("getItemId"));
            using(AndroidJavaObject jniPurchaseType = jniVirtualItem.Call<AndroidJavaObject>("getPurchaseType")) {
                System.IntPtr cls = AndroidJNI.FindClass("com/soomla/store/purchaseTypes/PurchaseWithMarket");
                if (AndroidJNI.IsInstanceOf(jniPurchaseType.GetRawObject(), cls)) {
                    using(AndroidJavaObject jniMarketItem = jniPurchaseType.Call<AndroidJavaObject>("getMarketItem")) {
                        MarketItem mi = new MarketItem(jniMarketItem);
                        PurchaseType = new PurchaseWithMarket(mi);
                    }
                } else {
                    cls = AndroidJNI.FindClass("com/soomla/store/purchaseTypes/PurchaseWithVirtualItem");
                    if (AndroidJNI.IsInstanceOf(jniPurchaseType.GetRawObject(), cls)) {
                        string itemId = jniPurchaseType.Call<string>("getTargetItemId");
                        int amount = jniPurchaseType.Call<int>("getAmount");

                        PurchaseType = new PurchaseWithVirtualItem(itemId, amount);
                    } else {
                        SoomlaUtils.LogError(TAG, "Couldn't determine what type of class is the given purchaseType.");
                    }
                }
            }
        }
Example #16
0
	void Awake () {
		AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
		this.androidJavaObject = ajc.GetStatic<AndroidJavaObject>("currentActivity");
        is_called_startFlag = false;
        recieve_from_Gear_MSG = "";		
		manager.is_gameOver = false;
	}
Example #17
0
 public Colors(IntPtr colorsPtr, AndroidJavaObject colorsJavaObject)
 {
     innerColors = colorsPtr;
     innerColorsJavaObject = colorsJavaObject;
     if(javaUnityApplicasaColors==null)
         javaUnityApplicasaColors = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaColors");
 }
Example #18
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 200, 100, 30), "Start")){
            loadBytes();

            Application.LoadLevel("GameMenu");
        }

        if(GUI.Button(new Rect(10, 300, 100, 30), "Update")){
            using (AndroidJavaClass unity_player = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                AndroidJavaObject current_activity = unity_player.GetStatic<AndroidJavaObject>("currentActivity");

                AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent",
                                                                current_activity,
                                                                new AndroidJavaClass("com.unity3d.plugin.downloader.UnityDownloaderActivity"));

                int Intent_FLAG_ACTIVITY_NO_ANIMATION = 0x10000;
                intent.Call<AndroidJavaObject>("addFlags", Intent_FLAG_ACTIVITY_NO_ANIMATION);
                intent.Call<AndroidJavaObject>("putExtra", "name", "Downloading...");

        //				intent.Call<AndroidJavaObject>("putExtra", "unityplayer.Activity",
        //															current_activity.Call<AndroidJavaObject>("getClass").Call<string>("getName"));
                current_activity.Call("startActivity", intent);

                if (AndroidJNI.ExceptionOccurred() != System.IntPtr.Zero)
                {
                    Debug.LogError("Exception occurred while attempting to start DownloaderActivity - is the AndroidManifest.xml incorrect?");
                    AndroidJNI.ExceptionDescribe();
                    AndroidJNI.ExceptionClear();
                }
            }
        }
    }
	void HideNavigationBar()
	{

		lock(this)
		{
			using(javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
			{
				unityActivity = javaClass.GetStatic<AndroidJavaObject>("currentActivity");
			}
			
			if(unityActivity == null)
			{
				return;
			}
			
			using(javaClass = new AndroidJavaClass("com.rak24.androidimmersivemode.Main"))
			{
				if(javaClass == null)
				{
					return;
				}
				else
				{
					javaObj = javaClass.CallStatic<AndroidJavaObject>("instance");
					if(javaObj == null)
						return;
					unityActivity.Call("runOnUiThread",new AndroidJavaRunnable(() => 
					                                                           {
						javaObj.Call("EnableImmersiveMode", unityActivity);
					}));
				}
			}
		}
	}
Example #20
0
    public static int IsLocked()
    {
        try
        {
            using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                activityContext = activityClass.GetStatic<AndroidJavaObject>("currentActivity");
            }

            using (
                AndroidJavaClass pluginClass =
                    new AndroidJavaClass("com.dualcorstudios.unityscreenpin.DCSAndroidToolkit"))
            {
                if (pluginClass != null)
                {
                    DCSToolkit = pluginClass.CallStatic<AndroidJavaObject>("instance");
                    DCSToolkit.Call("setContext", activityContext);
                    return activityContext.Call<int>("runOnUiThread",
                        new AndroidJavaRunnable(() => { DCSToolkit.Call("isLocked"); }));
                }
            }
        }
        catch (AndroidJavaException e)
        {
            Debug.Log(e.Message);
            Debug.Log(e.StackTrace);
        }
        return 1;
    }
	internal static AndroidJavaObject GetObjectMapper() {
		// it isn't critical that this is protected against multithreaded access.
		if (objectmapper == null) {
			objectmapper = new AndroidJavaObject ("com.fasterxml.jackson.databind.ObjectMapper");
		}
		return objectmapper;
	}
    public void Share(string shareText, string imagePath, string url, string subject = "")
    {
        #if UNITY_ANDROID
        AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
        AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");

        intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
        AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
        AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "file://" + imagePath);
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"), uriObject);
        intentObject.Call<AndroidJavaObject>("setType", "image/png");

        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), shareText);

        AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");

        AndroidJavaObject jChooser = intentClass.CallStatic<AndroidJavaObject>("createChooser", intentObject, subject);
        currentActivity.Call("startActivity", jChooser);
        #elif UNITY_IOS
        CallSocialShareAdvanced(shareText, subject, url, imagePath);
        #else
        Debug.Log("No sharing set up for this platform.");
        #endif
    }
	static BtConnection(){

		ajc = null;
		PluginReady = false;
	

		#if !UNITY_EDITOR
		if (Application.platform == RuntimePlatform.Android) {
			try {
				ajc = new AndroidJavaObject(BridgePackage);
					if (!IsAndroidJavaObjectNull(ajc)) {
						
						PluginReady = true;
					} 

			} catch {
				Debug.LogError("Bluetooth initialization failed. Probably .jar not present");

			}
		}
				
	
		#endif
	
				
}
Example #24
0
 static Density()
 {
     Value = 1.0f;
     #if UNITY_ANDROID
     using (
         AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"),
         metricsClass = new AndroidJavaClass("android.util.DisplayMetrics")
         ) {
         using (
             AndroidJavaObject metricsInstance = new AndroidJavaObject("android.util.DisplayMetrics"),
             activityInstance = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity"),
             windowManagerInstance = activityInstance.Call<AndroidJavaObject>("getWindowManager"),
             displayInstance = windowManagerInstance.Call<AndroidJavaObject>("getDefaultDisplay")
             ) {
             displayInstance.Call ("getMetrics", metricsInstance);
             Value = metricsInstance.Get<float> ("density");
         }
     }
     #endif
     #if UNITY_IPHONE
     if (Application.platform != RuntimePlatform.OSXEditor) {
         Value = IOSDensity_ ();
     }
     #endif
 }
 // Gets the status code from a Result object
 public static int GetStatusCode(AndroidJavaObject result) {
     if (result == null) {
         return -1;
     }
     AndroidJavaObject status = result.Call<AndroidJavaObject>("getStatus");
     return status.Call<int>("getStatusCode");
 }
 public void onCustomTemplateAdLoaded(AndroidJavaObject ad)
 {
     CustomNativeEventArgs args = new CustomNativeEventArgs() {
         nativeAd = new CustomNativeTemplateAd(new CustomNativeTemplateClient(ad))
     };
     OnCustomNativeTemplateAdLoaded(this, args);
 }
Example #27
0
    // 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 );
        }
    }
Example #28
0
 public Query(IntPtr queryPtr, AndroidJavaObject queryJavaObject)
 {
     innerQuery = queryPtr;
     innerQueryJavaObject = queryJavaObject;
     if(javaUnityApplicasaQuery==null)
         javaUnityApplicasaQuery = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaQuery");
 }
Example #29
0
 public GameV(IntPtr gameVPtr, AndroidJavaObject gameVJavaObject)
 {
     innerGameV = gameVPtr;
     innerGameVJavaObject = gameVJavaObject;
     if(javaUnityApplicasaGameV==null)
         javaUnityApplicasaGameV = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaGameV");
 }
Example #30
0
        public void start(AdjustConfig adjustConfig)
        {
            AndroidJavaObject ajoEnvironment = adjustConfig.environment == AdjustEnvironment.Sandbox ?
                new AndroidJavaClass ("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject> ("ENVIRONMENT_SANDBOX") :
                    new AndroidJavaClass ("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject> ("ENVIRONMENT_PRODUCTION");

            AndroidJavaObject ajoAdjustConfig = new AndroidJavaObject ("com.adjust.sdk.AdjustConfig", ajoCurrentActivity, adjustConfig.appToken, ajoEnvironment);

            if (adjustConfig.logLevel != null) {
                AndroidJavaObject ajoLogLevel = new AndroidJavaClass ("com.adjust.sdk.LogLevel").GetStatic<AndroidJavaObject> (adjustConfig.logLevel.ToString().ToUpper());

                if (ajoLogLevel != null) {
                    ajoAdjustConfig.Call ("setLogLevel", ajoLogLevel);
                }
            }

            if (adjustConfig.attributionChangedDelegate != null) {
                onAttributionChangedListener = new AttributionChangeListener (adjustConfig.attributionChangedDelegate);
                ajoAdjustConfig.Call ("setOnAttributionChangedListener", onAttributionChangedListener);
            }

            ajoAdjustConfig.Call ("setSdkPrefix", adjustConfig.sdkPrefix);

            ajcAdjust.CallStatic ("onCreate", ajoAdjustConfig);
        }
Example #31
0
 public DataManager(IntPtr dataManagerPtr, AndroidJavaObject dataManagerJavaObject)
 {
     innerDataManager = dataManagerPtr;
     innerDataManagerJavaObject = dataManagerJavaObject;
     if(javaUnityApplicasaDataManager==null)
         javaUnityApplicasaDataManager = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaDataManager");
 }
    public bool init(string unity_bundle_id, string fb_app_id)
    {
        dispose();
        fbWrapperObj =new AndroidJavaObject("com.macaronics.fbWrapper", new object[3]{unity_bundle_id, fb_app_id, "fbWrapper"});

        return true;
    }
 internal static UnityEngine.AndroidJavaObject GetJavaUserStats()
 {
     if (_userStats == null)
     {
         _userStats = new UnityEngine.AndroidJavaObject("com.htc.viveport.UserStats");
     }
     return(_userStats);
 }
Example #34
0
 internal static UnityEngine.AndroidJavaObject GetDeeplink()
 {
     if (_deeplink == null)
     {
         _deeplink = new UnityEngine.AndroidJavaObject("com.htc.viveport.Deeplink");
     }
     return(_deeplink);
 }
 internal static UnityEngine.AndroidJavaObject GetJavaAPI()
 {
     if (_api == null)
     {
         _api = new UnityEngine.AndroidJavaObject("com.htc.viveport.Api");
     }
     return(_api);
 }
 internal static UnityEngine.AndroidJavaObject GetJavaIAPurchase()
 {
     if (_iAPurchase == null)
     {
         _iAPurchase = new UnityEngine.AndroidJavaObject("com.htc.viveport.IAPurchase");
     }
     return(_iAPurchase);
 }
Example #37
0
 internal static UnityEngine.AndroidJavaObject GetJavaSubscription()
 {
     if (_subscription == null)
     {
         _subscription = new UnityEngine.AndroidJavaObject("com.htc.viveport.Subscription");
     }
     return(_subscription);
 }
Example #38
0
    public static string GetAndroidAdMobID()
    {
        UnityEngine.AndroidJavaClass  up = new UnityEngine.AndroidJavaClass("com.unity3d.player.UnityPlayer");
        UnityEngine.AndroidJavaObject currentActivity = up.GetStatic <UnityEngine.AndroidJavaObject>("currentActivity");
        UnityEngine.AndroidJavaObject contentResolver = currentActivity.Call <UnityEngine.AndroidJavaObject>("getContentResolver");
        UnityEngine.AndroidJavaObject secure          = new UnityEngine.AndroidJavaObject("android.provider.Settings$Secure");
        string deviceID = secure.CallStatic <string>("getString", contentResolver, "android_id");

        return(Md5Sum(deviceID).ToUpper());
    }
    private void Awake()
    {
        if (instance != null)
        {
            Destroy(this);
            return;
        }

        if (!CriAtomPlugin.IsLibraryInitialized())
        {
            Debug.LogError("[CRIWARE] Atom library is not initialized. Cannot setup CriAtomExOutputDeviceObserver.");
            Destroy(this);
            return;
        }

        instance = this;

#if CRIWAREPLUGIN_SUPPORT_OUTPUTDEVICE_OBSERVER
#if !UNITY_EDITOR && UNITY_IOS
        bool isStarted = UnsafeNativeMethods.criAtomUnity_StartOutputDeviceObserver_IOS();
        if (!isStarted)
        {
            Debug.LogError("[CRIWARE] CriAtomOutputDeviceObserver cannot start while Atom library is not initialized.");
        }
#elif !UNITY_EDITOR && UNITY_ANDROID
        UnityEngine.AndroidJavaClass  jc       = new UnityEngine.AndroidJavaClass("com.unity3d.player.UnityPlayer");
        UnityEngine.AndroidJavaObject activity = jc.GetStatic <UnityEngine.AndroidJavaObject>("currentActivity");

        if (checker == null)
        {
            checker = new UnityEngine.AndroidJavaObject("com.crimw.crijavaclasses.CriOutputDeviceObserver", activity, this.gameObject.name, "CallbackFromObserver_ANDROID");
        }
        if (checker == null)
        {
            Debug.LogError("[CRIWARE] Cannot load CriOutputDeviceObserver class in library.");
        }
        checker.Call("Start", activity);
        CheckOutputDevice_ANDROID();
#endif
        isConnected = lastIsConnected = IsDeviceConnected;
        deviceType  = lastDeviceType = DeviceType;
        if (_onDeviceConnectionChanged != null)
        {
            _onDeviceConnectionChanged(isConnected, deviceType);
        }
#elif !UNITY_EDITOR
        Debug.Log("[CRIWARE] CriAtomOutputDeviceObserver is not supported on this platform.");
#endif
        if (this.dontDestroyOnLoad)
        {
            GameObject.DontDestroyOnLoad(this.gameObject);
        }
    }
Example #40
0
 /// <summary>
 /// 调用方法
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="result"></param>
 /// <param name="jobj"></param>
 /// <param name="name"></param>
 /// <param name="args"></param>
 /// <returns></returns>
 public bool CallMethod <T>(ref T result, UnityEngine.AndroidJavaObject jobj, string name, params object[] args)
 {
     try
     {
         result = jobj.Call <T>(name, args);
         return(true);
     }
     catch (AndroidJavaException e)
     {
         Debug.LogError("Exception calling activity method " + name + ": " + e);
         return(false);
     }
 }
Example #41
0
 /// <summary>
 /// 调用方法
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="result"></param>
 /// <param name="jobj"></param>
 /// <param name="name"></param>
 /// <param name="args"></param>
 /// <returns></returns>
 public static bool UPvr_CallMethod(UnityEngine.AndroidJavaObject jobj, string name, params object[] args)
 {
     try
     {
         jobj.Call(name, args);
         return(true);
     }
     catch (AndroidJavaException e)
     {
         Debug.LogError(" Exception calling activity method " + name + ": " + e);
         return(false);
     }
 }
    private void CheckOutputDevice_ANDROID()
    {
        if (checker == null)
        {
            return;
        }

        UnityEngine.AndroidJavaClass  jc       = new UnityEngine.AndroidJavaClass("com.unity3d.player.UnityPlayer");
        UnityEngine.AndroidJavaObject activity = jc.GetStatic <UnityEngine.AndroidJavaObject>("currentActivity");
        int device = checker.Call <int>("CheckOutputDeviceType", activity);

        deviceType  = (OutputDeviceType)device;
        isConnected = (deviceType != OutputDeviceType.BuiltinSpeaker);
    }
        public static bool IsSupported(int width, int height, float framerate)
        {
#if UNITY_EDITOR
            return(true);
#elif UNITY_IPHONE
            return(isVideoSupportedFormat(width, height, framerate));
#elif UNITY_ANDROID
            var jo = new UnityEngine.AndroidJavaObject("asus4.videosupportedplugin.VideoSupportedPlugin");
            return(jo.CallStatic <bool>("isVideoSupportedFormat", width, height, framerate));
#else
            Debug.LogError("Not supported platform");
            return(false);
#endif
        }
Example #44
0
    UnityEngine.AndroidJavaObject GetPluginInstance()
    {
        if (activityContext == null)
        {
            using (UnityEngine.AndroidJavaClass activityClass = new UnityEngine.AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
                activityContext = activityClass.GetStatic <UnityEngine.AndroidJavaObject>("currentActivity");
            }
        }

        using (UnityEngine.AndroidJavaClass pluginClass = new UnityEngine.AndroidJavaClass(packageName + "." + className)) {
            if (unityMusicPluginInstance == null)
            {
                unityMusicPluginInstance = pluginClass.CallStatic <UnityEngine.AndroidJavaObject>("instance");
                unityMusicPluginInstance.Call("setContext", activityContext);
            }
        }

        return(unityMusicPluginInstance);
    }
    private void OnDestroy()
    {
        if (instance != this)
        {
            return;
        }
        instance = null;

#if CRIWAREPLUGIN_SUPPORT_OUTPUTDEVICE_OBSERVER
#if !UNITY_EDITOR && UNITY_IOS
        UnsafeNativeMethods.criAtomUnity_StopOutputDeviceObserver_IOS();
#elif !UNITY_EDITOR && UNITY_ANDROID
        UnityEngine.AndroidJavaClass  jc       = new UnityEngine.AndroidJavaClass("com.unity3d.player.UnityPlayer");
        UnityEngine.AndroidJavaObject activity = jc.GetStatic <UnityEngine.AndroidJavaObject>("currentActivity");
        if (activity != null && checker != null)
        {
            checker.Call("Stop", activity);
        }
        checker = null;
#endif
#endif
    }
Example #46
0
 public static AndroidJavaObject Box(object obj)
 {
     if (obj == null)
     {
         return(null);
     }
     if (AndroidReflection.IsPrimitive(obj.GetType()))
     {
         if (obj is int)
         {
             return(new AndroidJavaObject("java.lang.Integer", new object[]
             {
                 (int)obj
             }));
         }
         if (obj is bool)
         {
             return(new AndroidJavaObject("java.lang.Boolean", new object[]
             {
                 (bool)obj
             }));
         }
         if (obj is byte)
         {
             return(new AndroidJavaObject("java.lang.Byte", new object[]
             {
                 (byte)obj
             }));
         }
         if (obj is short)
         {
             return(new AndroidJavaObject("java.lang.Short", new object[]
             {
                 (short)obj
             }));
         }
         if (obj is long)
         {
             return(new AndroidJavaObject("java.lang.Long", new object[]
             {
                 (long)obj
             }));
         }
         if (obj is float)
         {
             return(new AndroidJavaObject("java.lang.Float", new object[]
             {
                 (float)obj
             }));
         }
         if (obj is double)
         {
             return(new AndroidJavaObject("java.lang.Double", new object[]
             {
                 (double)obj
             }));
         }
         if (obj is char)
         {
             return(new AndroidJavaObject("java.lang.Character", new object[]
             {
                 (char)obj
             }));
         }
         throw new Exception("JNI; Unknown argument type '" + obj.GetType() + "'");
     }
     else
     {
         if (obj is string)
         {
             return(new AndroidJavaObject("java.lang.String", new object[]
             {
                 (string)obj
             }));
         }
         if (obj is AndroidJavaClass)
         {
             return(new AndroidJavaObject(((AndroidJavaClass)obj).GetRawClass()));
         }
         if (obj is AndroidJavaObject)
         {
             return((AndroidJavaObject)obj);
         }
         if (obj is Array)
         {
             return(AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(_AndroidJNIHelper.ConvertToJNIArray((Array)obj)));
         }
         if (obj is AndroidJavaProxy)
         {
             return(AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(AndroidJNIHelper.CreateJavaProxy((AndroidJavaProxy)obj)));
         }
         if (obj is AndroidJavaRunnable)
         {
             return(AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(AndroidJNIHelper.CreateJavaRunnable((AndroidJavaRunnable)obj)));
         }
         throw new Exception("JNI; Unknown argument type '" + obj.GetType() + "'");
     }
 }
Example #47
0
        protected ReturnType _CallStatic <ReturnType>(string methodName, params object[] args)
        {
            if (args == null)
            {
                args = new object[1];
            }
            IntPtr methodID = AndroidJNIHelper.GetMethodID <ReturnType>(this.m_jclass, methodName, args, true);

            jvalue[]   array = AndroidJNIHelper.CreateJNIArgArray(args);
            ReturnType result;

            try
            {
                if (AndroidReflection.IsPrimitive(typeof(ReturnType)))
                {
                    if (typeof(ReturnType) == typeof(int))
                    {
                        result = (ReturnType)((object)AndroidJNISafe.CallStaticIntMethod(this.m_jclass, methodID, array));
                    }
                    else if (typeof(ReturnType) == typeof(bool))
                    {
                        result = (ReturnType)((object)AndroidJNISafe.CallStaticBooleanMethod(this.m_jclass, methodID, array));
                    }
                    else if (typeof(ReturnType) == typeof(byte))
                    {
                        result = (ReturnType)((object)AndroidJNISafe.CallStaticByteMethod(this.m_jclass, methodID, array));
                    }
                    else if (typeof(ReturnType) == typeof(short))
                    {
                        result = (ReturnType)((object)AndroidJNISafe.CallStaticShortMethod(this.m_jclass, methodID, array));
                    }
                    else if (typeof(ReturnType) == typeof(long))
                    {
                        result = (ReturnType)((object)AndroidJNISafe.CallStaticLongMethod(this.m_jclass, methodID, array));
                    }
                    else if (typeof(ReturnType) == typeof(float))
                    {
                        result = (ReturnType)((object)AndroidJNISafe.CallStaticFloatMethod(this.m_jclass, methodID, array));
                    }
                    else if (typeof(ReturnType) == typeof(double))
                    {
                        result = (ReturnType)((object)AndroidJNISafe.CallStaticDoubleMethod(this.m_jclass, methodID, array));
                    }
                    else if (typeof(ReturnType) == typeof(char))
                    {
                        result = (ReturnType)((object)AndroidJNISafe.CallStaticCharMethod(this.m_jclass, methodID, array));
                    }
                    else
                    {
                        result = default(ReturnType);
                    }
                }
                else if (typeof(ReturnType) == typeof(string))
                {
                    result = (ReturnType)((object)AndroidJNISafe.CallStaticStringMethod(this.m_jclass, methodID, array));
                }
                else if (typeof(ReturnType) == typeof(AndroidJavaClass))
                {
                    IntPtr jclass = AndroidJNISafe.CallStaticObjectMethod(this.m_jclass, methodID, array);
                    result = (ReturnType)((object)AndroidJavaObject.AndroidJavaClassDeleteLocalRef(jclass));
                }
                else if (typeof(ReturnType) == typeof(AndroidJavaObject))
                {
                    IntPtr jobject = AndroidJNISafe.CallStaticObjectMethod(this.m_jclass, methodID, array);
                    result = (ReturnType)((object)AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(jobject));
                }
                else
                {
                    if (!AndroidReflection.IsAssignableFrom(typeof(Array), typeof(ReturnType)))
                    {
                        throw new Exception("JNI: Unknown return type '" + typeof(ReturnType) + "'");
                    }
                    IntPtr array2 = AndroidJNISafe.CallStaticObjectMethod(this.m_jclass, methodID, array);
                    result = (ReturnType)((object)AndroidJNIHelper.ConvertFromJNIArray <ReturnType>(array2));
                }
            }
            finally
            {
                AndroidJNIHelper.DeleteJNIArgArray(args, array);
            }
            return(result);
        }
Example #48
0
        protected FieldType _GetStatic <FieldType>(string fieldName)
        {
            IntPtr fieldID = AndroidJNIHelper.GetFieldID <FieldType>(this.m_jclass, fieldName, true);

            if (AndroidReflection.IsPrimitive(typeof(FieldType)))
            {
                if (typeof(FieldType) == typeof(int))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticIntField(this.m_jclass, fieldID)));
                }
                if (typeof(FieldType) == typeof(bool))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticBooleanField(this.m_jclass, fieldID)));
                }
                if (typeof(FieldType) == typeof(byte))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticByteField(this.m_jclass, fieldID)));
                }
                if (typeof(FieldType) == typeof(short))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticShortField(this.m_jclass, fieldID)));
                }
                if (typeof(FieldType) == typeof(long))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticLongField(this.m_jclass, fieldID)));
                }
                if (typeof(FieldType) == typeof(float))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticFloatField(this.m_jclass, fieldID)));
                }
                if (typeof(FieldType) == typeof(double))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticDoubleField(this.m_jclass, fieldID)));
                }
                if (typeof(FieldType) == typeof(char))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticCharField(this.m_jclass, fieldID)));
                }
                return(default(FieldType));
            }
            else
            {
                if (typeof(FieldType) == typeof(string))
                {
                    return((FieldType)((object)AndroidJNISafe.GetStaticStringField(this.m_jclass, fieldID)));
                }
                if (typeof(FieldType) == typeof(AndroidJavaClass))
                {
                    IntPtr staticObjectField = AndroidJNISafe.GetStaticObjectField(this.m_jclass, fieldID);
                    return((FieldType)((object)AndroidJavaObject.AndroidJavaClassDeleteLocalRef(staticObjectField)));
                }
                if (typeof(FieldType) == typeof(AndroidJavaObject))
                {
                    IntPtr staticObjectField2 = AndroidJNISafe.GetStaticObjectField(this.m_jclass, fieldID);
                    return((FieldType)((object)AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(staticObjectField2)));
                }
                if (AndroidReflection.IsAssignableFrom(typeof(Array), typeof(FieldType)))
                {
                    IntPtr staticObjectField3 = AndroidJNISafe.GetStaticObjectField(this.m_jclass, fieldID);
                    return((FieldType)((object)AndroidJNIHelper.ConvertFromJNIArray <FieldType>(staticObjectField3)));
                }
                throw new Exception("JNI: Unknown field type '" + typeof(FieldType) + "'");
            }
        }
Example #49
0
 public InAppPurchaseResult(AndroidJavaObject result)
 {
     this.result = result;
 }
Example #50
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);
        }
    }
Example #51
0
        public static object UnboxArray(AndroidJavaObject obj)
        {
            if (obj == null)
            {
                return(null);
            }
            AndroidJavaClass  androidJavaClass   = new AndroidJavaClass("java/lang/reflect/Array");
            AndroidJavaObject androidJavaObject  = obj.Call <AndroidJavaObject>("getClass", new object[0]);
            AndroidJavaObject androidJavaObject2 = androidJavaObject.Call <AndroidJavaObject>("getComponentType", new object[0]);
            string            text = androidJavaObject2.Call <string>("getName", new object[0]);
            int num = androidJavaClass.Call <int>("getLength", new object[]
            {
                obj
            });
            Array array;

            if (androidJavaObject2.Call <bool>("IsPrimitive", new object[0]))
            {
                if ("I" == text)
                {
                    array = new int[num];
                }
                else if ("Z" == text)
                {
                    array = new bool[num];
                }
                else if ("B" == text)
                {
                    array = new byte[num];
                }
                else if ("S" == text)
                {
                    array = new short[num];
                }
                else if ("J" == text)
                {
                    array = new long[num];
                }
                else if ("F" == text)
                {
                    array = new float[num];
                }
                else if ("D" == text)
                {
                    array = new double[num];
                }
                else
                {
                    if (!("C" == text))
                    {
                        throw new Exception("JNI; Unknown argument type '" + text + "'");
                    }
                    array = new char[num];
                }
            }
            else if ("java.lang.String" == text)
            {
                array = new string[num];
            }
            else if ("java.lang.Class" == text)
            {
                array = new AndroidJavaClass[num];
            }
            else
            {
                array = new AndroidJavaObject[num];
            }
            for (int i = 0; i < num; i++)
            {
                array.SetValue(_AndroidJNIHelper.Unbox(androidJavaClass.CallStatic <AndroidJavaObject>("get", new object[]
                {
                    obj,
                    i
                })), i);
            }
            return(array);
        }
Example #52
0
 public CustomInAppPurchase(AndroidJavaObject purchase)
 {
     this.purchase = purchase;
 }
Example #53
0
        public static string GetSignature(object obj)
        {
            if (obj == null)
            {
                return("Ljava/lang/Object;");
            }
            Type type = (!(obj is Type)) ? obj.GetType() : ((Type)obj);

            if (AndroidReflection.IsPrimitive(type))
            {
                if (type.Equals(typeof(int)))
                {
                    return("I");
                }
                if (type.Equals(typeof(bool)))
                {
                    return("Z");
                }
                if (type.Equals(typeof(byte)))
                {
                    return("B");
                }
                if (type.Equals(typeof(short)))
                {
                    return("S");
                }
                if (type.Equals(typeof(long)))
                {
                    return("J");
                }
                if (type.Equals(typeof(float)))
                {
                    return("F");
                }
                if (type.Equals(typeof(double)))
                {
                    return("D");
                }
                if (type.Equals(typeof(char)))
                {
                    return("C");
                }
                return(string.Empty);
            }
            else
            {
                if (type.Equals(typeof(string)))
                {
                    return("Ljava/lang/String;");
                }
                if (obj is AndroidJavaProxy)
                {
                    AndroidJavaObject androidJavaObject = new AndroidJavaObject(((AndroidJavaProxy)obj).javaInterface.GetRawClass());
                    return("L" + androidJavaObject.Call <string>("getName", new object[0]) + ";");
                }
                if (type.Equals(typeof(AndroidJavaRunnable)))
                {
                    return("Ljava/lang/Runnable;");
                }
                if (type.Equals(typeof(AndroidJavaClass)))
                {
                    return("Ljava/lang/Class;");
                }
                if (type.Equals(typeof(AndroidJavaObject)))
                {
                    if (obj == type)
                    {
                        return("Ljava/lang/Object;");
                    }
                    AndroidJavaObject androidJavaObject2 = (AndroidJavaObject)obj;
                    using (AndroidJavaObject androidJavaObject3 = androidJavaObject2.Call <AndroidJavaObject>("getClass", new object[0]))
                    {
                        return("L" + androidJavaObject3.Call <string>("getName", new object[0]) + ";");
                    }
                }
                if (!AndroidReflection.IsAssignableFrom(typeof(Array), type))
                {
                    throw new Exception(string.Concat(new object[]
                    {
                        "JNI: Unknown signature for type '",
                        type,
                        "' (obj = ",
                        obj,
                        ") ",
                        (type != obj) ? "instance" : "equal"
                    }));
                }
                if (type.GetArrayRank() != 1)
                {
                    throw new Exception("JNI: System.Array in n dimensions is not allowed");
                }
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Append('[');
                stringBuilder.Append(_AndroidJNIHelper.GetSignature(type.GetElementType()));
                return(stringBuilder.ToString());
            }
        }
Example #54
0
        public static ArrayType ConvertFromJNIArray <ArrayType>(IntPtr array)
        {
            Type elementType = typeof(ArrayType).GetElementType();

            if (AndroidReflection.IsPrimitive(elementType))
            {
                if (elementType == typeof(int))
                {
                    return((ArrayType)((object)AndroidJNISafe.FromIntArray(array)));
                }
                if (elementType == typeof(bool))
                {
                    return((ArrayType)((object)AndroidJNISafe.FromBooleanArray(array)));
                }
                if (elementType == typeof(byte))
                {
                    return((ArrayType)((object)AndroidJNISafe.FromByteArray(array)));
                }
                if (elementType == typeof(short))
                {
                    return((ArrayType)((object)AndroidJNISafe.FromShortArray(array)));
                }
                if (elementType == typeof(long))
                {
                    return((ArrayType)((object)AndroidJNISafe.FromLongArray(array)));
                }
                if (elementType == typeof(float))
                {
                    return((ArrayType)((object)AndroidJNISafe.FromFloatArray(array)));
                }
                if (elementType == typeof(double))
                {
                    return((ArrayType)((object)AndroidJNISafe.FromDoubleArray(array)));
                }
                if (elementType == typeof(char))
                {
                    return((ArrayType)((object)AndroidJNISafe.FromCharArray(array)));
                }
                return(default(ArrayType));
            }
            else
            {
                if (elementType == typeof(string))
                {
                    int      arrayLength = AndroidJNISafe.GetArrayLength(array);
                    string[] array2      = new string[arrayLength];
                    for (int i = 0; i < arrayLength; i++)
                    {
                        IntPtr objectArrayElement = AndroidJNI.GetObjectArrayElement(array, i);
                        array2[i] = AndroidJNISafe.GetStringUTFChars(objectArrayElement);
                        AndroidJNISafe.DeleteLocalRef(objectArrayElement);
                    }
                    return((ArrayType)((object)array2));
                }
                if (elementType == typeof(AndroidJavaObject))
                {
                    int arrayLength2           = AndroidJNISafe.GetArrayLength(array);
                    AndroidJavaObject[] array3 = new AndroidJavaObject[arrayLength2];
                    for (int j = 0; j < arrayLength2; j++)
                    {
                        IntPtr objectArrayElement2 = AndroidJNI.GetObjectArrayElement(array, j);
                        array3[j] = new AndroidJavaObject(objectArrayElement2);
                        AndroidJNISafe.DeleteLocalRef(objectArrayElement2);
                    }
                    return((ArrayType)((object)array3));
                }
                throw new Exception("JNI: Unknown generic array type '" + elementType + "'");
            }
        }
Example #55
0
        public static object UnboxArray(AndroidJavaObject obj)
        {
            Array array;

            if (obj == null)
            {
                return(null);
            }
            AndroidJavaClass  class2 = new AndroidJavaClass("java/lang/reflect/Array");
            AndroidJavaObject obj3   = obj.Call <AndroidJavaObject>("getClass", new object[0]).Call <AndroidJavaObject>("getComponentType", new object[0]);
            string            str    = obj3.Call <string>("getName", new object[0]);

            object[] args = new object[] { obj };
            int      num  = class2.Call <int>("getLength", args);

            if (obj3.Call <bool>("IsPrimitive", new object[0]))
            {
                if ("I" != str)
                {
                    if ("Z" != str)
                    {
                        if ("B" != str)
                        {
                            if ("S" != str)
                            {
                                if ("J" != str)
                                {
                                    if ("F" != str)
                                    {
                                        if ("D" != str)
                                        {
                                            if ("C" != str)
                                            {
                                                throw new Exception("JNI; Unknown argument type '" + str + "'");
                                            }
                                            array = new char[num];
                                        }
                                        else
                                        {
                                            array = new double[num];
                                        }
                                    }
                                    else
                                    {
                                        array = new float[num];
                                    }
                                }
                                else
                                {
                                    array = new long[num];
                                }
                            }
                            else
                            {
                                array = new short[num];
                            }
                        }
                        else
                        {
                            array = new byte[num];
                        }
                    }
                    else
                    {
                        array = new bool[num];
                    }
                }
                else
                {
                    array = new int[num];
                }
            }
            else if ("java.lang.String" == str)
            {
                array = new string[num];
            }
            else if ("java.lang.Class" == str)
            {
                array = new AndroidJavaClass[num];
            }
            else
            {
                array = new AndroidJavaObject[num];
            }
            for (int i = 0; i < num; i++)
            {
                object[] objArray2 = new object[] { obj, i };
                array.SetValue(Unbox(class2.CallStatic <AndroidJavaObject>("get", objArray2)), i);
            }
            return(array);
        }