public string[] AddProperties(Dictionary <string, object> value) { AndroidJavaObject keys = (hsCampaignsApiCallAndReturnObject("addProperties", new object[] { convertToJavaHashMap(value) })); string[] keyValues = AndroidJNIHelper.ConvertFromJNIArray <string[]>(keys.GetRawObject()); return(keyValues); }
public void onDidReceiveData(AndroidJavaObject dataReceived) { AndroidJavaObject dataFromAndroid = dataReceived.Get <AndroidJavaObject>("ReceivedData"); byte[] byteData = AndroidJNIHelper.ConvertFromJNIArray <byte[]>(dataFromAndroid.GetRawObject()); _syncMessageHandler.OnDidReceiveData(byteData); }
public void OnGetThumbnail(AndroidJavaObject thumbnailData) { byte[] data = null; bool cancelled = false; if (thumbnailData != null) { AndroidJavaObject dataObject = thumbnailData.Get <AndroidJavaObject>("Data"); data = AndroidJNIHelper.ConvertFromJNIArray <byte[]>(dataObject.GetRawObject()); if (data.Length == 0) { data = null; } cancelled = thumbnailData.Get <bool>("Cancelled"); } LifecycleManager.Instance.QueueOnUpdateAction(() => { bool isCallbackValid = callback != null; if (isCallbackTargetUnityObject) { isCallbackValid = isCallbackValid && (callback.Target as UnityEngine.Object) != null; } if (isCallbackValid) { callback(filePath, data, cancelled); } }); }
public static void ReadSharedURLAndroid(FileStream fileStream) { using (var activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic <AndroidJavaObject>("currentActivity")) using (var intent = activity.Call <AndroidJavaObject>("getIntent")) using (var uri = intent.Call <AndroidJavaObject>("getData")) using (var contentResolver = activity.Call <AndroidJavaObject>("getContentResolver")) using (var inputStream = contentResolver.Call <AndroidJavaObject>("openInputStream", uri)) { byte[] buffer = new byte[1024]; var bufferPtr = AndroidJNIHelper.ConvertToJNIArray(buffer); // get the method id of InputStream.read(byte[] b, int off, int len) var readMethodId = AndroidJNIHelper.GetMethodID(inputStream.GetRawClass(), "read", "([BII)I"); jvalue[] args = new jvalue[3]; // construct arguments to pass to InputStream.read args[0].l = bufferPtr; // buffer args[1].i = 0; // offset args[2].i = buffer.Length; // length while (true) { int bytesRead = AndroidJNI.CallIntMethod(inputStream.GetRawObject(), readMethodId, args); if (bytesRead <= 0) { break; } byte[] newBuffer = AndroidJNIHelper.ConvertFromJNIArray <byte[]>(bufferPtr); fileStream.Write(newBuffer, 0, bytesRead); } fileStream.Flush(); } }
public static T StaticInvokeObjectCall <T>(string type, string name, string sig, params object[] args) { IntPtr intPtr = AndroidJNI.FindClass(type); IntPtr staticMethodID = AndroidJNI.GetStaticMethodID(intPtr, name, sig); jvalue[] array = ConstructArgArray(args); IntPtr intPtr2 = AndroidJNI.CallStaticObjectMethod(intPtr, staticMethodID, array); ConstructorInfo constructor = typeof(T).GetConstructor(new Type[1] { intPtr2.GetType() }); if (constructor != null) { return((T)constructor.Invoke(new object[1] { intPtr2 })); } if (typeof(T).IsArray) { return(AndroidJNIHelper.ConvertFromJNIArray <T>(intPtr2)); } Debug.Log((object)"Trying cast...."); Type typeFromHandle = typeof(T); return((T)Marshal.PtrToStructure(intPtr2, typeFromHandle)); }
public static T StaticInvokeObjectCall <T>(string type, string name, string sig, params object[] args) { IntPtr num = AndroidJNI.FindClass(type); IntPtr staticMethodId = AndroidJNI.GetStaticMethodID(num, name, sig); jvalue[] jvalueArray = JavaObjWrapper.ConstructArgArray(args); IntPtr ptr = AndroidJNI.CallStaticObjectMethod(num, staticMethodId, jvalueArray); ConstructorInfo constructor = typeof(T).GetConstructor(new Type[1] { ptr.GetType() }); if ((object)constructor != null) { return((T)constructor.Invoke(new object[1] { (object)ptr })); } if (typeof(T).IsArray) { return(AndroidJNIHelper.ConvertFromJNIArray <T>(ptr)); } Debug.Log((object)"Trying cast...."); Type structureType = typeof(T); return((T)Marshal.PtrToStructure(ptr, structureType)); }
public static Achievments[] GetArrayWithQuerySync(Query query, QueryKind queryKind) { if (javaUnityApplicasaAchievments == null) { javaUnityApplicasaAchievments = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaAchievments"); } AndroidJavaObject[] bigArray = javaUnityApplicasaAchievments.CallStatic <AndroidJavaObject[]>("ApplicasaAchievmentsGetArrayWithQuerySync", query.innerQueryJavaObject, (int)queryKind); Achievments[] achievmentsInner = null; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); Achievments[] achievmentstemp = new Achievments[InnerArray.Length]; for (int j = 0; j < InnerArray.Length; j++) { AndroidJavaObject tempObj = InnerArray[j]; achievmentstemp[j] = new Achievments(tempObj.GetRawObject(), tempObj); } if (achievmentsInner == null) { achievmentsInner = achievmentstemp; } else { Achievments[] firstOne = achievmentsInner; achievmentsInner = new Achievments[firstOne.Length + achievmentstemp.Length]; firstOne.CopyTo(achievmentsInner, 0); achievmentstemp.CopyTo(achievmentsInner, firstOne.Length); } } return(achievmentsInner); }
public static User[] GetArrayWithQuerySync(Query query, QueryKind queryKind) { if (javaUnityApplicasaUser == null) { javaUnityApplicasaUser = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaUser"); } AndroidJavaObject[] bigArray = javaUnityApplicasaUser.CallStatic <AndroidJavaObject[]>("ApplicasaUserGetArrayWithQuerySync", query.innerQueryJavaObject, (int)queryKind); User[] userInner = null;; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); User[] usertemp = new User[InnerArray.Length]; for (int j = 0; j < InnerArray.Length; j++) { AndroidJavaObject tempObj = InnerArray[j]; usertemp[j] = new User(tempObj.GetRawObject(), tempObj); } if (userInner == null) { userInner = usertemp; } else { User[] firstOne = userInner; userInner = new User[firstOne.Length + usertemp.Length]; firstOne.CopyTo(userInner, 0); usertemp.CopyTo(userInner, firstOne.Length); } } return(userInner); }
private static List <BluetoothDevice> GetDevices(int type) { AndroidJavaObject array; if (type == 0) { array = ServiceClass.CallStatic <AndroidJavaObject>("u_getBondedDevices"); } else { array = ServiceClass.CallStatic <AndroidJavaObject>("u_getDiscoveredDevices"); } List <BluetoothDevice> bondedDevices = new List <BluetoothDevice>(); if (array.GetRawObject().ToInt32() != 0) { string[] devices = AndroidJNIHelper.ConvertFromJNIArray <string[]>(array.GetRawObject()); foreach (string device in devices) { string[] tokens = device.Split(','); BluetoothDevice dev; dev.address = tokens[0]; dev.name = tokens[1]; bondedDevices.Add(dev); } } return(bondedDevices); }
public void onDidReceiveData(AndroidJavaObject dataReceived) { var dataFromAndroid = dataReceived.Get <AndroidJavaObject>("ReceivedData"); var byteData = AndroidJNIHelper.ConvertFromJNIArray <byte[]>(dataFromAndroid.GetRawObject()); _syncDelegate.OnDidReceiveData(byteData); }
public static IEnumerator GetFacebookFriendsIEnumerator(FBFriendArray fbFriendArray) { FBFriend[] fbFriends = new FBFriend[fbFriendArray.ArraySize]; AndroidJavaObject[] bigArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(fbFriendArray.Array); int count = 0; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); for (int j = 0; j < InnerArray.Length; j++) { using (AndroidJavaObject tempObj = InnerArray[j]) { fbFriends[count].Id = tempObj.Get <string>("mFacebookID"); fbFriends[count].Name = tempObj.Get <string>("mFacebookName"); fbFriends[count].ImageURL = tempObj.Get <string>("mFacebookImage"); bool hasUser = false; hasUser = tempObj.Get <bool>("mHasApplicasaUser"); if (hasUser) { AndroidJavaObject tempUserJavaObject = tempObj.Get <AndroidJavaObject>("user"); fbFriends[count].UserObj = new User(tempObj.GetRawObject(), tempObj); } count++; } } yield return(new WaitForSeconds(0.2f)); } FBFriends = fbFriends; }
public static VirtualGoodCategory[] GetArrayWithQuerySync(Query query, QueryKind queryKind) { if (javaUnityApplicasaVirtualGoodCategory == null) { javaUnityApplicasaVirtualGoodCategory = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaVirtualGoodCategory"); } AndroidJavaObject[] bigArray = javaUnityApplicasaVirtualGoodCategory.CallStatic <AndroidJavaObject[]>("ApplicasaVirtualGoodCategoryGetArrayWithQuerySync", query.innerQueryJavaObject, (int)queryKind); VirtualGoodCategory[] virtualGoodCategoryInner = null; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); VirtualGoodCategory[] virtualGoodCategorytemp = new VirtualGoodCategory[InnerArray.Length]; for (int j = 0; j < InnerArray.Length; j++) { AndroidJavaObject tempObj = InnerArray[j]; virtualGoodCategorytemp[j] = new VirtualGoodCategory(tempObj.GetRawObject(), tempObj); } if (virtualGoodCategoryInner == null) { virtualGoodCategoryInner = virtualGoodCategorytemp; } else { VirtualGoodCategory[] firstOne = virtualGoodCategoryInner; virtualGoodCategoryInner = new VirtualGoodCategory[firstOne.Length + virtualGoodCategorytemp.Length]; firstOne.CopyTo(virtualGoodCategoryInner, 0); virtualGoodCategorytemp.CopyTo(virtualGoodCategoryInner, firstOne.Length); } } return(virtualGoodCategoryInner); }
public static byte[] asBytes(this AndroidJavaObject obj) { var raw = obj.GetRawObject(); return(raw.ToInt32() == 0 ? null : AndroidJNIHelper.ConvertFromJNIArray <byte[]>(raw)); }
public static Chat[] GetArrayWithQuerySync(Query query, QueryKind queryKind) { if (javaUnityApplicasaChat == null) { javaUnityApplicasaChat = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaChat"); } AndroidJavaObject[] bigArray = javaUnityApplicasaChat.CallStatic <AndroidJavaObject[]>("ApplicasaChatGetArrayWithQuerySync", query.innerQueryJavaObject, (int)queryKind); Chat[] chatInner = null; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); Chat[] chattemp = new Chat[InnerArray.Length]; for (int j = 0; j < InnerArray.Length; j++) { AndroidJavaObject tempObj = InnerArray[j]; chattemp[j] = new Chat(tempObj.GetRawObject(), tempObj); } if (chatInner == null) { chatInner = chattemp; } else { Chat[] firstOne = chatInner; chatInner = new Chat[firstOne.Length + chattemp.Length]; firstOne.CopyTo(chatInner, 0); chattemp.CopyTo(chatInner, firstOne.Length); } } return(chatInner); }
public string[] GetNotifyReleaseStages() { if (!CanRunJNI()) { return(new string[] {}); } bool isAttached = bsg_unity_isJNIAttached(); if (!isAttached) { AndroidJNI.AttachCurrentThread(); } var stages = CallNativeObjectMethod("getNotifyReleaseStages", "()[Ljava/lang/String;", new object[] {}); string[] value = null; if (stages != null && stages != IntPtr.Zero) { value = AndroidJNIHelper.ConvertFromJNIArray <string[]>(stages); } if (!isAttached) { AndroidJNI.DetachCurrentThread(); } return(value); }
public static GameV[] GetArrayWithQuerySync(Query query, QueryKind queryKind) { if (javaUnityApplicasaGameV == null) { javaUnityApplicasaGameV = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaGameV"); } AndroidJavaObject[] bigArray = javaUnityApplicasaGameV.CallStatic <AndroidJavaObject[]>("ApplicasaGameVGetArrayWithQuerySync", query.innerQueryJavaObject, (int)queryKind); GameV[] gameVInner = null; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); GameV[] gameVtemp = new GameV[InnerArray.Length]; for (int j = 0; j < InnerArray.Length; j++) { AndroidJavaObject tempObj = InnerArray[j]; gameVtemp[j] = new GameV(tempObj.GetRawObject(), tempObj); } if (gameVInner == null) { gameVInner = gameVtemp; } else { GameV[] firstOne = gameVInner; gameVInner = new GameV[firstOne.Length + gameVtemp.Length]; firstOne.CopyTo(gameVInner, 0); gameVtemp.CopyTo(gameVInner, firstOne.Length); } } return(gameVInner); }
public static void GetVirtualGoodCategories(VirtualGoodCategory.GetVirtualGoodCategoryArrayFinished callback) { if (javaUnityApplicasaIAP == null) { javaUnityApplicasaIAP = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaIAP"); } Error error; error.Id = 1; error.Message = "Success"; AndroidJavaObject virtualGoodCategoryArrayJava = javaUnityApplicasaIAP.CallStatic <AndroidJavaObject>("ApplicasaIAPGetVirtualGoodCategoriesWithBlock"); VirtualGoodCategory.VirtualGoodCategoryArray virtualGoodCategoryArray = new VirtualGoodCategory.VirtualGoodCategoryArray(); virtualGoodCategoryArray.Array = virtualGoodCategoryArrayJava.GetRawObject(); AndroidJavaObject[] convertedArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(virtualGoodCategoryArray.Array); int count = 0; for (int i = 0; i < convertedArray.Length; i++) { AndroidJavaObject[] temp = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(convertedArray[i].GetRawObject()); count += temp.Length; } virtualGoodCategoryArray.ArraySize = count; convertedArray = null; callback(true, error, virtualGoodCategoryArray); }
internal static void _GetPendingLocalNotifications(Action <AndroidNotificationRequest[]> callback) { Helper.NullArgumentTest(callback); var requests = new List <AndroidNotificationRequest>(); var jObj = AndroidUtil.CallJavaStaticMethod <AndroidJavaObject>( ANDROID_JAVA_CLASS, "_GetPendingNotificationRequestsJson"); // The JNI array conversion method will crash if the raw object value is 0. if (jObj.GetRawObject().ToInt32() != 0) { var jsonStrs = AndroidJNIHelper.ConvertFromJNIArray <string[]>(jObj.GetRawObject()); foreach (string s in jsonStrs) { var req = AndroidNotificationRequest.FromJson(s); if (req != null) { requests.Add(req); } } } jObj.Dispose(); callback(requests.ToArray()); }
public static Foo[] GetArrayWithQuerySync(Query query, QueryKind queryKind) { if (javaUnityApplicasaFoo == null) { javaUnityApplicasaFoo = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaFoo"); } AndroidJavaObject[] bigArray = javaUnityApplicasaFoo.CallStatic <AndroidJavaObject[]>("ApplicasaFooGetArrayWithQuerySync", query.innerQueryJavaObject, (int)queryKind); Foo[] fooInner = null; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); Foo[] footemp = new Foo[InnerArray.Length]; for (int j = 0; j < InnerArray.Length; j++) { AndroidJavaObject tempObj = InnerArray[j]; footemp[j] = new Foo(tempObj.GetRawObject(), tempObj); } if (fooInner == null) { fooInner = footemp; } else { Foo[] firstOne = fooInner; fooInner = new Foo[firstOne.Length + footemp.Length]; firstOne.CopyTo(fooInner, 0); footemp.CopyTo(fooInner, firstOne.Length); } } return(fooInner); }
public static DataManString[] GetArrayWithQuerySync(Query query, QueryKind queryKind) { if (javaUnityApplicasaDataManString == null) { javaUnityApplicasaDataManString = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaDataManString"); } AndroidJavaObject[] bigArray = javaUnityApplicasaDataManString.CallStatic <AndroidJavaObject[]>("ApplicasaDataManStringGetArrayWithQuerySync", query.innerQueryJavaObject, (int)queryKind); DataManString[] dataManStringInner = null; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); DataManString[] dataManStringtemp = new DataManString[InnerArray.Length]; for (int j = 0; j < InnerArray.Length; j++) { AndroidJavaObject tempObj = InnerArray[j]; dataManStringtemp[j] = new DataManString(tempObj.GetRawObject(), tempObj); } if (dataManStringInner == null) { dataManStringInner = dataManStringtemp; } else { DataManString[] firstOne = dataManStringInner; dataManStringInner = new DataManString[firstOne.Length + dataManStringtemp.Length]; firstOne.CopyTo(dataManStringInner, 0); dataManStringtemp.CopyTo(dataManStringInner, firstOne.Length); } } return(dataManStringInner); }
public static ScoreB[] GetArrayWithQuerySync(Query query, QueryKind queryKind) { if (javaUnityApplicasaScoreB == null) { javaUnityApplicasaScoreB = new AndroidJavaClass("com.applicasaunity.Unity.ApplicasaScoreB"); } AndroidJavaObject[] bigArray = javaUnityApplicasaScoreB.CallStatic <AndroidJavaObject[]>("ApplicasaScoreBGetArrayWithQuerySync", query.innerQueryJavaObject, (int)queryKind); ScoreB[] scoreBInner = null; for (int i = 0; i < bigArray.Length; i++) { AndroidJavaObject tempJavaObject = bigArray[i]; AndroidJavaObject[] InnerArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(tempJavaObject.GetRawObject()); ScoreB[] scoreBtemp = new ScoreB[InnerArray.Length]; for (int j = 0; j < InnerArray.Length; j++) { AndroidJavaObject tempObj = InnerArray[j]; scoreBtemp[j] = new ScoreB(tempObj.GetRawObject(), tempObj); } if (scoreBInner == null) { scoreBInner = scoreBtemp; } else { ScoreB[] firstOne = scoreBInner; scoreBInner = new ScoreB[firstOne.Length + scoreBtemp.Length]; firstOne.CopyTo(scoreBInner, 0); scoreBtemp.CopyTo(scoreBInner, firstOne.Length); } } return(scoreBInner); }
private Dictionary <string, object> DictionaryFromJavaMap(IntPtr source) { var dict = new Dictionary <string, object>(); var entries = AndroidJNI.CallObjectMethod(source, MapEntrySet, new jvalue[] {}); var iterator = AndroidJNI.CallObjectMethod(entries, CollectionIterator, new jvalue[] {}); while (AndroidJNI.CallBooleanMethod(iterator, IteratorHasNext, new jvalue[] {})) { var entry = AndroidJNI.CallObjectMethod(iterator, IteratorNext, new jvalue[] {}); var key = AndroidJNI.CallStringMethod(entry, MapEntryGetKey, new jvalue[] {}); var value = AndroidJNI.CallObjectMethod(entry, MapEntryGetValue, new jvalue[] {}); if (value != null && value != IntPtr.Zero) { var valueClass = AndroidJNI.CallObjectMethod(value, ObjectGetClass, new jvalue[] {}); if (AndroidJNI.CallBooleanMethod(valueClass, ClassIsArray, new jvalue[] {})) { var values = AndroidJNIHelper.ConvertFromJNIArray <string[]>(value); dict.AddToPayload(key, values); } else if (AndroidJNI.IsInstanceOf(value, MapClass)) { dict.AddToPayload(key, DictionaryFromJavaMap(value)); } else { // FUTURE(dm): check if Integer, Long, Double, or Float before calling toString dict.AddToPayload(key, AndroidJNI.CallStringMethod(value, ObjectToString, new jvalue[] {})); } AndroidJNI.DeleteLocalRef(value); } AndroidJNI.DeleteLocalRef(entry); } return(dict); }
/// <summary> /// Calls a static method with an object return type. /// </summary> /// <returns>The invoke call.</returns> /// <param name="type">Type.</param> /// <param name="name">Name.</param> /// <param name="sig">Sig.</param> /// <param name="args">Arguments.</param> /// <typeparam name="T">The 1st type parameter.</typeparam> public static T StaticInvokeObjectCall <T>( string type, string name, string sig, params object[] args) { IntPtr rawClass = AndroidJNI.FindClass(type); IntPtr method = AndroidJNI.GetStaticMethodID(rawClass, name, sig); jvalue[] jArgs = ConstructArgArray(args); try { IntPtr val = AndroidJNI.CallStaticObjectMethod(rawClass, method, jArgs); ConstructorInfo c = typeof(T).GetConstructor(new Type[] { val.GetType() }); if (c != null) { return((T)c.Invoke(new object[] { val })); } if (typeof(T).IsArray) { // make an array //TODO: handle arrays of objects return(AndroidJNIHelper.ConvertFromJNIArray <T>(val)); } Debug.Log("Trying cast...."); Type t = typeof(T); return((T)Marshal.PtrToStructure(val, t)); } finally { AndroidJNIHelper.DeleteJNIArgArray(args, jArgs); } }
// Retrieves a list of available rewards for this AdUnit public List <MoPubReward> getAVailableRewards() { if (Application.platform != RuntimePlatform.Android) { return(null); } // Clear any existing reward object mappings between Unity and Android Java _rewardsDict.Clear(); using (AndroidJavaObject obj = _plugin.Call <AndroidJavaObject> ("getAvailableRewards")) { AndroidJavaObject[] rewardsJavaObjArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]> (obj.GetRawObject()); if (rewardsJavaObjArray.Length > 1) { foreach (AndroidJavaObject r in rewardsJavaObjArray) { string label = r.Call <string> ("getLabel"); int amount = r.Call <int> ("getAmount"); _rewardsDict.Add(new MoPubReward(label, amount), r); } } } return(new List <MoPubReward> (_rewardsDict.Keys)); }
internal override List <MoPub.Reward> GetAvailableRewards() { if (!CheckPluginReady()) { return(new List <MoPub.Reward>()); } // Clear any existing reward object mappings between Unity and Android Java _rewardsDict.Clear(); using (var obj = _plugin.Call <AndroidJavaObject>("getAvailableRewards")) { var rewardsJavaObjArray = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(obj.GetRawObject()); if (rewardsJavaObjArray.Length <= 1) { return(new List <MoPub.Reward>(_rewardsDict.Keys)); } foreach (var r in rewardsJavaObjArray) { _rewardsDict.Add( new MoPub.Reward { Label = r.Call <string>("getLabel"), Amount = r.Call <int>("getAmount") }, r); } } return(new List <MoPub.Reward>(_rewardsDict.Keys)); }
private void onFrame(int frameIndex) { frameHandler(frameIndex, nativeTexture); if (!matrixSet) { Dispatcher.Dispatch( Dispatcher.Target.RenderThread, () => { surfaceTexture.Call(@"updateTexImage"); // Update UV transform var args = new jvalue[1]; args [0].l = transformMatrix; AndroidJNI.CallVoidMethod(surfaceTexture.GetRawObject(), getTransformMatrixMethod, args); // Inject into render material var transform = AndroidJNIHelper.ConvertFromJNIArray <float[]> (transformMatrix); for (var j = 0; j < 4; j++) { for (var i = 0; i < 4; i++) { matrix [i, j] = transform [i + 4 * j]; } } renderMaterial.SetMatrix("_SampleTransform", matrix); matrixSet = true; } ); } }
public static T StaticInvokeObjectCall <T>(string type, string name, string sig, params object[] args) { IntPtr clazz = AndroidJNI.FindClass(type); IntPtr methodID = AndroidJNI.GetStaticMethodID(clazz, name, sig); jvalue[] jvalueArray = ConstructArgArray(args); IntPtr array = AndroidJNI.CallStaticObjectMethod(clazz, methodID, jvalueArray); Type[] types = new Type[] { array.GetType() }; ConstructorInfo constructor = typeof(T).GetConstructor(types); if (constructor != null) { object[] parameters = new object[] { array }; return((T)constructor.Invoke(parameters)); } if (typeof(T).IsArray) { return(AndroidJNIHelper.ConvertFromJNIArray <T>(array)); } Debug.Log("Trying cast...."); Type structureType = typeof(T); return((T)Marshal.PtrToStructure(array, structureType)); }
private static string Android_GetAuthority(string className = "com.yasirkula.unity.NativeShareContentProvider") { int PackageManager_GET_PROVIDERS = 8; AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic <AndroidJavaObject>("currentActivity"); var context = activity.Call <AndroidJavaObject>("getApplicationContext"); var packageManager = context.Call <AndroidJavaObject>("getPackageManager"); var packageName = context.Call <string>("getPackageName"); var packageInfo = packageManager.Call <AndroidJavaObject>("getPackageInfo", packageName, PackageManager_GET_PROVIDERS); var providersUncasted = packageInfo.Get <AndroidJavaObject>("providers"); AndroidJavaObject[] providers = AndroidJNIHelper.ConvertFromJNIArray <AndroidJavaObject[]>(providersUncasted.GetRawObject()); if (providers != null) { foreach (var provider in providers) { var providerName = provider.Get <string>("name"); var providerPackageName = provider.Get <string>("packageName"); var providerAuthority = provider.Get <string>("authority"); if (!string.IsNullOrEmpty(providerName) && !string.IsNullOrEmpty(providerPackageName) && !string.IsNullOrEmpty(providerAuthority) && providerName.Equals(className) && providerPackageName.Equals(packageName)) { return(providerAuthority); } } } return(Application.identifier); }
public void OnGetVideoFrame(AndroidJavaObject frameData) { byte[] data = null; long positionMilliseconds = 0; if (frameData != null) { AndroidJavaObject dataObject = frameData.Get <AndroidJavaObject>("Data"); data = AndroidJNIHelper.ConvertFromJNIArray <byte[]>(dataObject.GetRawObject()); if (data.Length == 0) { data = null; } positionMilliseconds = frameData.Get <long>("PositionMilliseconds"); } LifecycleManager.Instance.QueueOnUpdateAction(() => { bool isCallbackValid = callback != null; if (isCallbackTargetUnityObject) { isCallbackValid = isCallbackValid && (callback.Target as UnityEngine.Object) != null; } if (isCallbackValid) { callback(data, positionMilliseconds); } }); }
public static byte[] readBytesFromStreamingAssetsPath(string filepath) { byte[] buff = null; try { #if UNITY_ANDROID && !UNITY_EDITOR sbyte[] sbuff = null; string tempPath = filepath.Replace(PStr.b().a(Application.streamingAssetsPath).a("/").e(), ""); AndroidJavaObject obj = jcAssetMgr.CallStatic <AndroidJavaObject>("getBytes", tempPath); if (obj != null && obj.GetRawObject().ToInt32() != 0) { sbuff = AndroidJNIHelper.ConvertFromJNIArray <sbyte[]>(obj.GetRawObject()); } if (obj != null) { obj.Dispose(); obj = null; } buff = Array.ConvertAll <sbyte, byte>(sbuff, a => (byte)a); #else if (File.Exists(filepath)) { buff = File.ReadAllBytes(filepath); } #endif } catch (Exception e) { Debug.LogError(e); } return(buff); }