Exemplo n.º 1
0
        public string getString(int index)
        {
#if VERBOSE_LOGGING
            Debug.Log(MethodBase.GetCurrentMethod().Name);
#endif
            JNIFind();
            if (_jcJsonArray == IntPtr.Zero)
            {
                Debug.LogError("_jcJsonObject is not initialized");
                return(null);
            }
            if (_jmGetString == IntPtr.Zero)
            {
                Debug.LogError("_jmGetString is not initialized");
                return(null);
            }

            int    arg1   = index;
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmGetString, new jvalue[] { new jvalue()
                                                                                                {
                                                                                                    i = arg1
                                                                                                } });

            if (result == IntPtr.Zero)
            {
                Debug.LogError("Failed to get String");
                return(null);
            }

            return(AndroidJNI.GetStringUTFChars(result));
        }
Exemplo n.º 2
0
        public string getMetaData()
        {
#if VERBOSE_LOGGING
            Debug.Log(string.Format("Invoking {0}...", MethodBase.GetCurrentMethod().Name));
#endif
            JNIFind();

            if (_instance == IntPtr.Zero)
            {
                Debug.LogError("_instance is not initialized");
                return(null);
            }
            if (_jmGetMetaData == IntPtr.Zero)
            {
                Debug.LogError("_jmGetMetaData is not initialized");
                return(null);
            }
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmGetMetaData, new jvalue[0] {
            });
            if (result == IntPtr.Zero)
            {
                //optional field could be null
                return(null);
            }
#if VERBOSE_LOGGING
            Debug.Log(string.Format("{0} Success", MethodBase.GetCurrentMethod().Name));
#endif
            String retVal = AndroidJNI.GetStringUTFChars(result);
            AndroidJNI.DeleteLocalRef(result);
            return(retVal);
        }
        public T InvokeObjectCall <T>(string name, string sig, params object[] theArgs)
        {
            IntPtr methodID = AndroidJNI.GetMethodID(RawClass, name, sig);

            jvalue[] array  = ConstructArgArray(theArgs);
            IntPtr   intPtr = AndroidJNI.CallObjectMethod(raw, methodID, array);

            if (intPtr.Equals(IntPtr.Zero))
            {
                return(default(T));
            }
            ConstructorInfo constructor = typeof(T).GetConstructor(new Type[1]
            {
                intPtr.GetType()
            });

            if (constructor != null)
            {
                return((T)constructor.Invoke(new object[1]
                {
                    intPtr
                }));
            }
            Type typeFromHandle = typeof(T);

            return((T)Marshal.PtrToStructure(intPtr, typeFromHandle));
        }
Exemplo n.º 4
0
        public float?getUserRating()
        {
#if VERBOSE_LOGGING
            Debug.Log(string.Format("Invoking {0}...", MethodBase.GetCurrentMethod().Name));
#endif
            JNIFind();

            if (_instance == IntPtr.Zero)
            {
                Debug.LogError("_instance is not initialized");
                return(0);
            }
            if (_jmGetUserRating == IntPtr.Zero)
            {
                Debug.LogError("_jmGetUserRating is not initialized");
                return(0);
            }
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmGetUserRating, new jvalue[0] {
            });
            if (result == IntPtr.Zero)
            {
                return(null);
            }
            float retVal = OuyaUnityPlugin.getFloat(result);
            AndroidJNI.DeleteLocalRef(result);
            return(retVal);
        }
Exemplo n.º 5
0
            public void addScreenshot(Bitmap bitmap)
            {
#if VERBOSE_LOGGING
                Debug.Log(string.Format("Invoking {0}...", MethodBase.GetCurrentMethod().Name));
#endif
                JNIFind();

                if (_instance == IntPtr.Zero)
                {
                    Debug.LogError("_instance is not initialized");
                    return;
                }
                if (_jmAddScreenshot == IntPtr.Zero)
                {
                    Debug.LogError("_jmAddScreenshot is not initialized");
                    return;
                }
                if (null == bitmap)
                {
                    Debug.LogError("bitmap is not initialized");
                    return;
                }
                if (bitmap.GetInstance() == IntPtr.Zero)
                {
                    Debug.LogError("bitmap.Instance is not initialized");
                    return;
                }

                IntPtr arg1   = bitmap.GetInstance();
                IntPtr retVal = AndroidJNI.CallObjectMethod(_instance, _jmAddScreenshot, new jvalue[] { new jvalue()
                                                                                                        {
                                                                                                            l = arg1
                                                                                                        } });
            }
Exemplo n.º 6
0
        public void ConnectRequest(string addr)
        {
            var connectMethod = AndroidJNI.GetMethodID(this.bleManagerCls, "connect", "(Ljava/lang/String;)Lcom/toio/ble/BleDeviceObj;");

            this.argBuilder.Clear().Append(ArgJvalueBuilder.GenerateJvalue(addr));
            AndroidJNI.CallObjectMethod(this.javaBleManagerObj, connectMethod, this.argBuilder.Build());
        }
Exemplo n.º 7
0
        /// <summary>
        /// Invokes a method that returns an object.
        /// </summary>
        /// <returns>The object call.</returns>
        /// <param name="name">Name.</param>
        /// <param name="sig">Sig.</param>
        /// <param name="theArgs">The arguments.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public T InvokeObjectCall <T>(string name, string sig,
                                      params object[] theArgs)
        {
            IntPtr methodId = AndroidJNI.GetMethodID(RawClass, name, sig);

            jvalue[] jArgs = ConstructArgArray(theArgs);

            try
            {
                IntPtr val = AndroidJNI.CallObjectMethod(raw, methodId, jArgs);

                if (val.Equals(IntPtr.Zero))
                {
                    return(default(T));
                }

                ConstructorInfo ctor = typeof(T).GetConstructor(new Type[] { val.GetType() });
                if (ctor != null)
                {
                    return((T)ctor.Invoke(new object[] { val }));
                }

                Type t = typeof(T);
                return((T)Marshal.PtrToStructure(val, t));
            }
            finally
            {
                AndroidJNIHelper.DeleteJNIArgArray(theArgs, jArgs);
            }
        }
Exemplo n.º 8
0
        public static string CallStr(this AndroidJavaObject ajo, string methodName,
                                     params object[] args)
        {
#if UNITY_2018_2_OR_NEWER
            // A fix for a regression issue introduced in Unity 2018.2
            // Details: https://issuetracker.unity3d.com/issues/android-androidjavaobject-dot-call-crashes-with-fatal-signal-11-sigsegv

            if (args == null)
            {
                args = new object[] { null };
            }
            IntPtr   methodID = AndroidJNIHelper.GetMethodID <string>(ajo.GetRawClass(), methodName, args, false);
            jvalue[] jniArgs  = AndroidJNIHelper.CreateJNIArgArray(args);

            try
            {
                IntPtr returnValue = AndroidJNI.CallObjectMethod(ajo.GetRawObject(), methodID, jniArgs);
                if (IntPtr.Zero != returnValue)
                {
                    var val = AndroidJNI.GetStringUTFChars(returnValue);
                    AndroidJNI.DeleteLocalRef(returnValue);
                    return(val);
                }
            }
            finally
            {
                AndroidJNIHelper.DeleteJNIArgArray(args, jniArgs);
            }

            return(null);
#else
            return(CallSafe <string>(ajo, methodName, args));
#endif
        }
Exemplo n.º 9
0
        /**
         * Unity AndroidJavaObject throws an exception if a call from Java returns null
         * so we have our own implementation.
         */
        public static AndroidJavaObject cjoReturningNull(
            this AndroidJavaObject javaObject, string methodName, params object[] args
            )
        {
            if (args == null)
            {
                args = new object[1];
            }
            var methodId = AndroidJNIHelper.GetMethodID <AndroidJavaObject>(
                javaObject.GetRawClass(), methodName, args, false
                );
            var jniArgArray = AndroidJNIHelper.CreateJNIArgArray(args);

            try {
                var returned = AndroidJNI.CallObjectMethod(
                    javaObject.GetRawObject(), methodId, jniArgArray
                    );
                if (returned == IntPtr.Zero)
                {
                    return(null);
                }
                else
                {
                    try { return(ajoCreator(new object[] { returned })); }
                    finally { AndroidJNI.DeleteLocalRef(returned); }
                }
            }
            finally {
                AndroidJNIHelper.DeleteJNIArgArray(args, jniArgArray);
            }
        }
Exemplo n.º 10
0
        public string toString()
        {
#if VERBOSE_LOGGING
            Debug.Log(MethodBase.GetCurrentMethod().Name);
#endif
            JNIFind();
            if (_jcJsonObject == IntPtr.Zero)
            {
                Debug.LogError("_jcJsonObject is not initialized");
                return(null);
            }
            if (_jmToString == IntPtr.Zero)
            {
                Debug.LogError("_jmHas is not initialized");
                return(null);
            }

            IntPtr retVal = AndroidJNI.CallObjectMethod(_instance, _jmToString, new jvalue[0]);
            if (retVal == IntPtr.Zero)
            {
                Debug.LogError("Failed to get string");
                return(null);
            }

            string result = AndroidJNI.GetStringUTFChars(retVal);
            AndroidJNI.DeleteLocalRef(retVal);
            return(result);
        }
Exemplo n.º 11
0
        public List <Breadcrumb> GetBreadcrumbs()
        {
            List <Breadcrumb> breadcrumbs = new List <Breadcrumb>();

            if (!CanRunJNI())
            {
                return(breadcrumbs);
            }
            bool isAttached = bsg_unity_isJNIAttached();

            if (!isAttached)
            {
                AndroidJNI.AttachCurrentThread();
            }


            var javaBreadcrumbs = CallNativeObjectMethod("getBreadcrumbs", "()Ljava/util/List;", new object[] {});
            var iterator        = AndroidJNI.CallObjectMethod(javaBreadcrumbs, CollectionIterator, new jvalue[] {});

            while (AndroidJNI.CallBooleanMethod(iterator, IteratorHasNext, new jvalue[] {}))
            {
                var crumb = AndroidJNI.CallObjectMethod(iterator, IteratorNext, new jvalue[] {});
                breadcrumbs.Add(ConvertToBreadcrumb(crumb));
                AndroidJNI.DeleteLocalRef(crumb);
            }

            AndroidJNI.DeleteLocalRef(javaBreadcrumbs);
            AndroidJNI.DeleteLocalRef(iterator);
            if (!isAttached)
            {
                AndroidJNI.DetachCurrentThread();
            }

            return(breadcrumbs);
        }
Exemplo n.º 12
0
        public string getString(string name)
        {
#if VERBOSE_LOGGING
            Debug.Log(MethodBase.GetCurrentMethod().Name);
#endif
            JNIFind();
            if (_jcJsonObject == IntPtr.Zero)
            {
                Debug.LogError("_jcJsonObject is not initialized");
                return(null);
            }
            if (_jmGetString == IntPtr.Zero)
            {
                Debug.LogError("_jmGetString is not initialized");
                return(null);
            }

            IntPtr arg1   = AndroidJNI.NewStringUTF(name);
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmGetString, new jvalue[] { new jvalue()
                                                                                                {
                                                                                                    l = arg1
                                                                                                } });
            AndroidJNI.DeleteLocalRef(arg1);

            if (result == IntPtr.Zero)
            {
                Debug.LogError("Failed to get String");
                return(null);
            }

            return(AndroidJNI.GetStringUTFChars(result));
        }
Exemplo n.º 13
0
        public org.json.JSONArray getJSONArray(string name)
        {
#if VERBOSE_LOGGING
            Debug.Log(MethodBase.GetCurrentMethod().Name);
#endif
            JNIFind();
            if (_jcJsonObject == IntPtr.Zero)
            {
                Debug.LogError("_jcJsonObject is not initialized");
                return(null);
            }
            if (_jmGetJsonArray == IntPtr.Zero)
            {
                Debug.LogError("_jmGetJsonArray is not initialized");
                return(null);
            }

            IntPtr arg1   = AndroidJNI.NewStringUTF(name);
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmGetJsonArray, new jvalue[] { new jvalue()
                                                                                                   {
                                                                                                       l = arg1
                                                                                                   } });
            AndroidJNI.DeleteLocalRef(arg1);

            if (result == IntPtr.Zero)
            {
                Debug.LogError("Failed to get JSONArray");
                return(null);
            }

            org.json.JSONArray retVal = new JSONArray(result);
            return(retVal);
        }
Exemplo n.º 14
0
        public org.json.JSONArray put(int index, String value)
        {
#if VERBOSE_LOGGING
            Debug.Log(MethodBase.GetCurrentMethod().Name);
#endif
            JNIFind();
            if (_jcJsonArray == IntPtr.Zero)
            {
                Debug.LogError("_jcJsonObject is not initialized");
                return(null);
            }
            if (_jmPut == IntPtr.Zero)
            {
                Debug.LogError("_jmPut is not initialized");
                return(null);
            }

            int    arg1   = index;
            IntPtr arg2   = AndroidJNI.NewStringUTF(value);
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmPut, new jvalue[] { new jvalue()
                                                                                          {
                                                                                              i = arg1
                                                                                          }, new jvalue()
                                                                                          {
                                                                                              l = arg2
                                                                                          } });
            AndroidJNI.DeleteLocalRef(arg2);

            return(this);
        }
Exemplo n.º 15
0
    /// <summary>
    ///  Helper method for creating a java HashMap from a c# dictionary
    /// </summary>
    /// <param name="dictionary">dictionary to use for HashMap creation</param>
    /// <returns>AndroidJovaObject referencing a java HashMap</returns>
    protected AmazonJavaWrapper DictionaryToAndroidHashMap(Dictionary <String, String> dictionary)
    {
        AndroidJNI.PushLocalFrame(10);

        AndroidJavaObject javaHashMap = new AndroidJavaObject("java.util.HashMap");

        //revert to manual JNI calls due to apparent bug in calling put on a hashmap object
        //from the AndroidJavaObject class
        IntPtr putMethod = AndroidJNIHelper.GetMethodID(javaHashMap.GetRawClass(), "put",
                                                        "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");

        object[] keyValSet = new object[2];

        foreach (KeyValuePair <string, string> kv in dictionary)
        {
            using (AndroidJavaObject key = new AndroidJavaObject("java.lang.String", kv.Key)){
                using (AndroidJavaObject value = new AndroidJavaObject("java.lang.String", kv.Value)){
                    keyValSet[0] = key;
                    keyValSet[1] = value;
                    jvalue[] methodValues = AndroidJNIHelper.CreateJNIArgArray(keyValSet);
                    AndroidJNI.CallObjectMethod(javaHashMap.GetRawObject(),
                                                putMethod, methodValues);
                }
            }
        }
        AndroidJNI.PopLocalFrame(System.IntPtr.Zero);
        return(new AmazonJavaWrapper(javaHashMap));
    }
Exemplo n.º 16
0
	private static AndroidJavaObject CreateJavaMapFromDictainary(IDictionary<string, string> parameters)
	{
		AndroidJavaObject javaMap = new AndroidJavaObject("java.util.HashMap");
		IntPtr putMethod = AndroidJNIHelper.GetMethodID(
			javaMap.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(javaMap.GetRawObject(),
							putMethod, AndroidJNIHelper.CreateJNIArgArray(args));
				}
			}
		}

		return javaMap;
	}
Exemplo n.º 17
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);
        }
    }
Exemplo n.º 18
0
        public static string safeCallStringMethod(AndroidJavaObject javaObject, string methodName, params object[] args)
        {
            if (args == null)
            {
                args = new object[] { null }
            }
            ;
            IntPtr methodID = AndroidJNIHelper.GetMethodID <string>(javaObject.GetRawClass(), methodName, args, false);

            jvalue[] jniArgs = AndroidJNIHelper.CreateJNIArgArray(args);

            try
            {
                IntPtr returnValue = AndroidJNI.CallObjectMethod(javaObject.GetRawObject(), methodID, jniArgs);
                if (IntPtr.Zero != returnValue)
                {
                    var val = AndroidJNI.GetStringUTFChars(returnValue);
                    AndroidJNI.DeleteLocalRef(returnValue);
                    return(val);
                }
            }
            finally
            {
                AndroidJNIHelper.DeleteJNIArgArray(args, jniArgs);
            }

            return(null);
        }
Exemplo n.º 19
0
        private System.IntPtr GetScanner()
        {
            var getScanner = AndroidJNI.GetMethodID(bleManagerCls, "getScanner", "()Lcom/toio/ble/BleScannerObj;");
            var scanner    = AndroidJNI.CallObjectMethod(this.javaBleManagerObj, getScanner, null);

            return(scanner);
        }
Exemplo n.º 20
0
    private static AndroidJavaObject CreateAndroidTargetInfo(Dictionary <string, List <string> > info)
    {
        AndroidJavaObject androidJavaObject = new AndroidJavaObject("java.util.HashMap");

        foreach (KeyValuePair <string, List <string> > item in info)
        {
            AndroidJavaObject androidJavaObject2 = new AndroidJavaObject("java.util.LinkedList");
            foreach (string item2 in item.Value)
            {
                AndroidJavaObject androidJavaObject3 = new AndroidJavaObject("java.lang.String", item2);
                androidJavaObject2.Call <bool>("add", new object[1]
                {
                    androidJavaObject3
                });
            }
            AndroidJavaObject androidJavaObject4 = new AndroidJavaObject("java.lang.String", item.Key);
            IntPtr            methodID           = AndroidJNIHelper.GetMethodID(androidJavaObject.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
            AndroidJNI.CallObjectMethod(args: AndroidJNIHelper.CreateJNIArgArray(new object[2]
            {
                androidJavaObject4,
                androidJavaObject2
            }), obj: androidJavaObject.GetRawObject(), methodID: methodID);
        }
        return(androidJavaObject);
    }
Exemplo n.º 21
0
        public Editor edit()
        {
#if VERBOSE_LOGGING
            Debug.Log(string.Format("Invoking {0}...", MethodBase.GetCurrentMethod().Name));
#endif
            JNIFind();

            if (_instance == IntPtr.Zero)
            {
                Debug.LogError("_instance is not initialized");
                return(null);
            }
            if (_jmEdit == IntPtr.Zero)
            {
                Debug.LogError("_jmEdit is not initialized");
                return(null);
            }
            IntPtr retVal = AndroidJNI.CallObjectMethod(_instance, _jmEdit, new jvalue[0] {
            });
            if (retVal == IntPtr.Zero)
            {
                Debug.LogError("Edit returned null");
                return(null);
            }
#if VERBOSE_LOGGING
            Debug.Log(string.Format("{0} Success", MethodBase.GetCurrentMethod().Name));
#endif
            IntPtr globalRef = AndroidJNI.NewGlobalRef(retVal);
            AndroidJNI.DeleteLocalRef(retVal);
            return(new OuyaMod.Editor(globalRef));
        }
Exemplo n.º 22
0
    //turn a dictionary into hashmap, to pass it in JNI
    private static AndroidJavaObject ConvertHashMap(Dictionary <string, string> dict)
    {
        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 (dict == null)
        {
            return(null);
        }

        object[] args = new object[2];
        foreach (KeyValuePair <string, string> kvp in dict)
        {
            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));
                }
            }
        }
        return(obj_HashMap);
    }
Exemplo n.º 23
0
        public InputStream openFile(string filename)
        {
#if VERBOSE_LOGGING
            Debug.Log(string.Format("Invoking {0}...", MethodBase.GetCurrentMethod().Name));
#endif
            JNIFind();

            if (_instance == IntPtr.Zero)
            {
                Debug.LogError("_instance is not initialized");
                return(null);
            }
            if (_jmOpenFile == IntPtr.Zero)
            {
                Debug.LogError("_jmOpenFile is not initialized");
                return(null);
            }
            IntPtr arg1     = AndroidJNI.NewStringUTF(filename);
            IntPtr localRef = AndroidJNI.CallObjectMethod(_instance, _jmOpenFile, new jvalue[] { new jvalue()
                                                                                                 {
                                                                                                     l = arg1
                                                                                                 } });
            AndroidJNI.DeleteLocalRef(arg1);
            if (localRef == IntPtr.Zero)
            {
                Debug.LogError("_jmOpenFile returned null");
                return(null);
            }
            IntPtr globalRef = AndroidJNI.NewGlobalRef(localRef);
            AndroidJNI.DeleteLocalRef(localRef);
            return(new InputStream(globalRef));
        }
Exemplo n.º 24
0
        public string getDeviceName()
        {
            if (_instance == IntPtr.Zero)
            {
                Debug.LogError("_instance is not initialized");
                return(null);
            }
            if (_jmGetDeviceName == IntPtr.Zero)
            {
                Debug.LogError("_jmGetDeviceName is not initialized");
                return(null);
            }
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmGetDeviceName, new jvalue[0]);

            if (result == IntPtr.Zero)
            {
                //might not be connected
                //Debug.LogError("Failed to get device name");
                return(null);
            }
            String retVal = AndroidJNI.GetStringUTFChars(result);

            AndroidJNI.DeleteLocalRef(result);
            return(retVal);
        }
Exemplo n.º 25
0
        public List <string> getFilenames()
        {
#if VERBOSE_LOGGING
            Debug.Log(string.Format("Invoking {0}...", MethodBase.GetCurrentMethod().Name));
#endif
            JNIFind();

            List <string> retVal = new List <string>();

            if (_instance == IntPtr.Zero)
            {
                Debug.LogError("_instance is not initialized");
                return(retVal);
            }
            if (_jmGetFilenames == IntPtr.Zero)
            {
                Debug.LogError("_jmGetFilenames is not initialized");
                return(retVal);
            }
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmGetFilenames, new jvalue[0] {
            });
            if (result == IntPtr.Zero)
            {
                Debug.LogError("_jmGetFilenames returned null");
                return(retVal);
            }
#if VERBOSE_LOGGING
            Debug.Log(string.Format("{0} Success", MethodBase.GetCurrentMethod().Name));
#endif
            retVal = OuyaUnityPlugin.getStringList(result);
            AndroidJNI.DeleteLocalRef(result);
            return(retVal);
        }
        public static AndroidJavaObject ConvertToHashMap(IDictionary <string, string> stringStringDictionary)
        {
            if (stringStringDictionary == null)
            {
                return(null);
            }

            var objHashMap = new AndroidJavaObject("java.util.HashMap");

            System.IntPtr methodPut = AndroidJNIHelper.GetMethodID(objHashMap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");

            object[] args = new object[2];
            foreach (KeyValuePair <string, string> keyValuePair in stringStringDictionary)
            {
                using (AndroidJavaObject javaStringKey = new AndroidJavaObject(JavaStringClass, keyValuePair.Key))
                {
                    using (AndroidJavaObject javaStringValue = new AndroidJavaObject(JavaStringClass, keyValuePair.Value))
                    {
                        args[0] = javaStringKey;
                        args[1] = javaStringValue;
                        AndroidJNI.CallObjectMethod(objHashMap.GetRawObject(), methodPut, AndroidJNIHelper.CreateJNIArgArray(args));
                    }
                }
            }

            return(objHashMap);
        }
Exemplo n.º 27
0
        protected internal static AndroidJavaObject GetHashMapFromDictionary(Dictionary <string, object> dict)
        {
            // quick out if nothing in the dict param
            if (dict == null || dict.Count <= 0)
            {
                return(null);
            }

            AndroidJavaObject hashMap   = new AndroidJavaObject("java.util.HashMap");
            IntPtr            putMethod = AndroidJNIHelper.GetMethodID(hashMap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");

            object[] args = new object[2];
            foreach (KeyValuePair <string, object> kvp in dict)
            {
                using (var key = new AndroidJavaObject("java.lang.String", kvp.Key))
                {
                    using (var value = new AndroidJavaObject("java.lang.String", kvp.Value))
                    {
                        args[0] = key;
                        args[1] = value;
                        AndroidJNI.CallObjectMethod(hashMap.GetRawObject(), putMethod, AndroidJNIHelper.CreateJNIArgArray(args));
                    }
                }
            }

            return(hashMap);
        }
Exemplo n.º 28
0
    public override void logEvent(string eventId, Hashtable 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 (DictionaryEntry 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);
        }
    }
Exemplo n.º 29
0
        public OuyaMod create()
        {
            JNIFind();

            if (_instance == IntPtr.Zero)
            {
                Debug.LogError("_instance is not initialized");
                return(null);
            }
            if (_jmCreate == IntPtr.Zero)
            {
                Debug.LogError("_jmCreate is not initialized");
                return(null);
            }
            IntPtr retVal = AndroidJNI.CallObjectMethod(_instance, _jmCreate, new jvalue[0] {
            });

            if (retVal == IntPtr.Zero)
            {
                Debug.LogError("Create returned null");
                return(null);
            }
            IntPtr globalRef = AndroidJNI.NewGlobalRef(retVal);

            AndroidJNI.DeleteLocalRef(retVal);
            return(new OuyaMod(globalRef));
        }
Exemplo n.º 30
0
        public org.json.JSONObject getJSONObject(int index)
        {
#if VERBOSE_LOGGING
            Debug.Log(MethodBase.GetCurrentMethod().Name);
#endif
            JNIFind();
            if (_jcJsonArray == IntPtr.Zero)
            {
                Debug.LogError("_jcJsonObject is not initialized");
                return(null);
            }
            if (_jmGetJsonObject == IntPtr.Zero)
            {
                Debug.LogError("_jmGetJsonObject is not initialized");
                return(null);
            }

            int    arg1   = index;
            IntPtr result = AndroidJNI.CallObjectMethod(_instance, _jmGetJsonObject, new jvalue[] { new jvalue()
                                                                                                    {
                                                                                                        i = arg1
                                                                                                    } });
            if (result == IntPtr.Zero)
            {
                Debug.LogError("Failed to get JSONObject");
                return(null);
            }

            org.json.JSONObject retVal = new JSONObject(result);
            return(retVal);
        }