protected override List<NonConsumableItem> _getNonConsumableItems() { List<NonConsumableItem> nonConsumableItems = new List<NonConsumableItem>(); AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniNonConsumableItems = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getNonConsumableItems")) { for(int i=0; i<jniNonConsumableItems.Call<int>("size"); i++) { using(AndroidJavaObject jniNon = jniNonConsumableItems.Call<AndroidJavaObject>("get", i)) { nonConsumableItems.Add(new NonConsumableItem(jniNon)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); return nonConsumableItems; }
public static void exit() { AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); activity.Call("runOnUiThread", new object[] { new AndroidJavaRunnable(delegate { activity.Call("finish", new object[0]); SdkU3d.callSdkApi("exit", new object[0]); new AndroidJavaClass("java.lang.System").CallStatic("exit", new object[] { 0 }); }) }); }
public static void AcquireMulticastLock() { AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaObject wifi = activity.Call<AndroidJavaObject>("getSystemService", "wifi"); androidMulticastLock = wifi.Call<AndroidJavaObject>("createMulticastLock", "udpkit"); androidMulticastLock.Call("acquire"); }
public override void AddOSSpecificExternalDatasetSearchDirs() { #if UNITY_ANDROID if (Application.platform == RuntimePlatform.Android) { // Get the external storage directory AndroidJavaClass jclassEnvironment = new AndroidJavaClass("android.os.Environment"); AndroidJavaObject jobjFile = jclassEnvironment.CallStatic<AndroidJavaObject>("getExternalStorageDirectory"); string externalStorageDirectory = jobjFile.Call<string>("getAbsolutePath"); // Get the package name AndroidJavaObject jobjActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); string packageName = jobjActivity.Call<string>("getPackageName"); // Add some best practice search directories // // Assumes just Vufroria datasets extracted to the files directory AddExternalDatasetSearchDir(externalStorageDirectory + "/Android/data/" + packageName + "/files/"); // Assume entire StreamingAssets dir is extracted here and our datasets are in the "Vuforia/DeviceDatabases" directory AddExternalDatasetSearchDir(externalStorageDirectory + "/Android/data/" + packageName + "/files/Vuforia/DeviceDatabases/"); // Assume entire StreamingAssets dir is extracted here and our datasets are in the "QCAR" directory AddExternalDatasetSearchDir(externalStorageDirectory + "/Android/data/" + packageName + "/files/QCAR/"); } #endif //UNITY_ANDROID }
void onSdkStopped () { var activity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject> ("currentActivity"); activity.Call ("runOnUiThread", new AndroidJavaRunnable (() => { AndroidJavaObject toast = new AndroidJavaClass ("android.widget.Toast").CallStatic<AndroidJavaObject>("makeText", activity, "sdk stop.", 1); toast.Call ("show"); })); }
void onClickAppSchemeBanner (string appScheme) { var activity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject> ("currentActivity"); activity.Call ("runOnUiThread", new AndroidJavaRunnable (() => { AndroidJavaObject toast = new AndroidJavaClass ("android.widget.Toast").CallStatic<AndroidJavaObject>("makeText", activity, appScheme, 1); toast.Call ("show"); })); }
public static void LoadInBackground(string parseObject, string objectId) { var query = new AndroidJavaClass("com.parse.ParseQuery").CallStatic<AndroidJavaObject>("getQuery", parseObject); query.Call("getInBackground", objectId, new AndroidJavaObject("java.lang.Object")); // var cb = new GetCallback(); // cb.done(new AndroidJavaObject("com.parse.ParseObject", parseObject), null); }
/// Init class with given site id and domain name public static void Init() { analyticsPlugin = new AndroidJavaClass("com.unityrealm.uranalytics.AnalyticsActivity"); unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); analyticsPlugin.Call("intialize", currentActivity); }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { #if UNITY_ANDROID // Get the unity player activity AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); activity.Call<bool>("moveTaskToBack", true); #endif } }
public override void AddOSSpecificExternalDatasetSearchDirs() { #if UNITY_ANDROID if (Application.platform == RuntimePlatform.Android) { // Get the external storage directory AndroidJavaClass jclassEnvironment = new AndroidJavaClass("android.os.Environment"); AndroidJavaObject jobjFile = jclassEnvironment.CallStatic<AndroidJavaObject>("getExternalStorageDirectory"); string externalStorageDirectory = jobjFile.Call<string>("getAbsolutePath"); // Get the package name AndroidJavaObject jobjActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); string packageName = jobjActivity.Call<string>("getPackageName"); // Add some best practice search directories // // Assumes just Vufroria datasets extracted to the files directory AddExternalDatasetSearchDir(externalStorageDirectory + "/Android/data/" + packageName + "/files/"); // Assume entire StreamingAssets dir is extracted here and our datasets are in the "QCAR" directory AddExternalDatasetSearchDir(externalStorageDirectory + "/Android/data/" + packageName + "/files/QCAR/"); //float x = 2.0 * .1 / (100.0 - 0.0); //float y = 2.0 * .1 / (100.0 - 0.0); //float a = (100.0 + 0.0) / (100.0 - 0.0); //float b = (100.0 + 0.0) / (100.0 - 0.0); //float c = -(100.0 + .1) / (100.0 - .1); //float d = -(2.0 * 100.0 * .1) / (100 - .1); //float e = -1.0; //Matrix4x4 m = new Matrix4x4(); //m[0, 0] = x; //m[0, 1] = 0; //m[0, 2] = a; //m[0, 3] = 0; //m[1, 0] = 0; //m[1, 1] = y; //m[1, 2] = b; //m[1, 3] = 0; //m[2, 0] = 0; //m[2, 1] = 0; //m[2, 2] = c; //m[2, 3] = d; //m[3, 0] = 0; //m[3, 1] = 0; //m[3, 2] = e; //m[3, 3] = 0; //cam.projectionMatrix = m; } #endif //UNITY_ANDROID }
static AndroidNativeAudio() { AndroidJavaObject context = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); if (Application.streamingAssetsPath.Substring(Application.streamingAssetsPath.Length - 12) == ".obb!/assets") { hasOBB = true; int versionCode = context.Call<AndroidJavaObject>("getPackageManager").Call<AndroidJavaObject>("getPackageInfo", context.Call<string>("getPackageName"), 0).Get<int>("versionCode"); try { assets = new AndroidJavaClass("com.android.vending.expansion.zipfile.APKExpansionSupport").CallStatic<AndroidJavaObject>("getAPKExpansionZipFile", context, versionCode, 0); } catch(Exception e) { Debug.Log(e.ToString()); } } else { hasOBB = false; assets = context.Call<AndroidJavaObject>("getAssets"); } }
//adapted from http://stackoverflow.com/questions/4553650/how-to-check-device-natural-default-orientation-on-android-i-e-get-landscape/4555528#4555528 public static string GetDeviceDefaultOrientation(){ if (mConfig == null){ using (AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"). GetStatic<AndroidJavaObject>("currentActivity")){ mConfig = activity.Call<AndroidJavaObject>("getResources").Call<AndroidJavaObject>("getConfiguration"); } } int dOrientation = mConfig.Get<int>("orientation"); if( dOrientation == ORIENTATION_LANDSCAPE ){ return ("LANDSCAPE"); }else if(dOrientation == ORIENTATION_PORTRAIT ){ return ("PORTRAIT"); } return ("None"); }
static public string GetMacAddress() { #if UNITY_IPHONE NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach( NetworkInterface adapter in nics) { PhysicalAddress address = adapter.GetPhysicalAddress(); if( "" != address.ToString()) { Debug.Log( address.ToString()); return address.ToString(); } } return "error lectura mac address"; #endif #if UNITY_ANDROID string macAddr = null; AndroidJavaObject wifiMgr = null; using( AndroidJavaObject activity = new AndroidJavaClass( "com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>( "currentActivity")) { wifiMgr = activity.Call<AndroidJavaObject>( "getSystemService", "wifi"); } macAddr = wifiMgr.Call<AndroidJavaObject>( "getConnectionInfo").Call<string>( "getMacAddress"); macAddr = macAddr.Replace( ":", ""); return macAddr; #endif return null;//dopamin Complie error }
public static List<NonConsumableItem> GetNonConsumableItems() { StoreUtils.LogDebug(TAG, "Trying to fetch noncons"); List<NonConsumableItem> nonConsumableItems = new List<NonConsumableItem>(); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniNonConsumableItems = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getNonConsumableItems")) { for(int i=0; i<jniNonConsumableItems.Call<int>("size"); i++) { using(AndroidJavaObject jniNon = jniNonConsumableItems.Call<AndroidJavaObject>("get", i)) { nonConsumableItems.Add(new NonConsumableItem(jniNon)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR IntPtr p = IntPtr.Zero; int err = storeInfo_GetNonConsumableItems(out p); IOS_ErrorCodes.CheckAndThrowException(err); string nonConsumableJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + nonConsumableJson); JSONObject nonConsArr = new JSONObject(nonConsumableJson); foreach(JSONObject obj in nonConsArr.list) { nonConsumableItems.Add(new NonConsumableItem(obj)); } #endif return nonConsumableItems; }
public void CreateQuickGame(int minOpponents, int maxOpponents, IList<string> playersToInvite, int variant, RealTimeMultiplayerListener listener) { Logger.d(string.Format("AndroidRtmpClient.CreateQuickGame, opponents={0}-{1}, player={2}" + "variant={3}", minOpponents, maxOpponents, playersToInvite, variant)); if (!PrepareToCreateRoom("CreateQuickGame", listener)) { return; } mRtmpListener = listener; mVariant = variant; mClient.CallClientApi("rtmp create quick game", () => { AndroidJavaClass rtmpUtil = JavaUtil.GetClass(JavaConsts.SupportRtmpUtilsClass); // Bundle autoMatchCriteria = RoomConfig.createAutoMatchCriteria(minOpponents, maxOpponents, 0); AndroidJavaClass RoomConfig = new AndroidJavaClass("com.google.android.gms.games.multiplayer.realtime.RoomConfig"); AndroidJavaObject autoMatchCriteria = RoomConfig.CallStatic<AndroidJavaObject>("createAutoMatchCriteria", minOpponents, maxOpponents, 0); // IList<string> to java.util.ArrayList<String> AndroidJavaObject javaUtilArrayList = new AndroidJavaClass("java.utils.ArrayList"); foreach (var player in playersToInvite) { javaUtilArrayList.Call("add", player); } // public static void create(GoogleApiClient apiClient, ArrayList<String> playersToInvite, int variant, Bundle autoMatchCriteria, // RoomUpdateListener roomUpdateListener, RoomStatusUpdateListener roomStatusUpdateListener, RealTimeMessageReceivedListener messageReceivedListener) rtmpUtil.CallStatic("create", mClient.GHManager.GetApiClient(), javaUtilArrayList, variant, autoMatchCriteria, new RoomUpdateProxy(this), new RoomStatusUpdateProxy(this), new RealTimeMessageReceivedProxy(this)); }, (bool success) => { if (!success) { FailRoomSetup("Failed to create game because GoogleApiClient was disconnected"); } }); }
private string ReturnMacAndroidAddress() { string macAddr = ""; #if UNITY_ANDROID && !UNITY_EDITOR if (mWiFiManager == null) { using (AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity")) { mWiFiManager = activity.Call<AndroidJavaObject>("getSystemService","wifi"); } } macAddr = mWiFiManager.Call<AndroidJavaObject>("getConnectionInfo").Call<string>("getMacAddress"); Debug.Log("Mac Adress : "+ macAddr); #endif return macAddr; }
void Awake() { if (DebugFlag) { ResourceManager.EnablePauseFlag = true; } #if UNITY_STANDALONE_WIN Screen.SetResolution(960, 640, false); #endif { ANativeRuntime.exp_clear_luastate(); wLua.L = new LuaState(); ANativeRuntime.exp_setup_luastate(wLua.L.L); wLua.L.RegisterCSFuncs(); } #if (UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8) if (!Handheld.PlayFullScreenMovie("title.mp4", Color.black, FullScreenMovieControlMode.Hidden, FullScreenMovieScalingMode.AspectFill)) Debug.LogError("title.mp4"); #endif #if UNITY_ANDROID var activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); activity.Call("InitFinish"); Debug.LogWarning("JavaInitFinish"); #endif DontDestroyOnLoad(gameObject); ParseCommandLine(); SetupPath(); ECLogFile.Touch(); //调用一下,保证ECLogFile已实例化,否则可能会丢log ECDebug.init(); InitUtilities(); { Double currentTime = ECUtility.GetTime(); EntryPointCache.LastUpdateTime = currentTime; EntryPointCache.LastResumeTime = currentTime - 10; } StartCoroutine(InitGameCoroutine().GetEnumerator()); }
/// <summary> /// Fetches the virtual goods of your game. /// </summary> /// <returns>All virtual goods.</returns> protected override List<VirtualGood> _getVirtualGoods() { List<VirtualGood> virtualGoods = new List<VirtualGood>(); AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniVirtualGoods = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getGoods")) { for(int i=0; i<jniVirtualGoods.Call<int>("size"); i++) { AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniGood = jniVirtualGoods.Call<AndroidJavaObject>("get", i)) { virtualGoods.Add((VirtualGood)VirtualItem.factoryItemFromJNI(jniGood)); } AndroidJNI.PopLocalFrame(IntPtr.Zero); } } AndroidJNI.PopLocalFrame(IntPtr.Zero); return virtualGoods; }
/// <summary> /// Fetches the virtual currency packs of your game. /// </summary> /// <returns>All virtual currency packs.</returns> protected override List<VirtualCurrencyPack> _getVirtualCurrencyPacks() { List<VirtualCurrencyPack> vcps = new List<VirtualCurrencyPack>(); AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniVirtualCurrencyPacks = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getCurrencyPacks")) { for(int i=0; i<jniVirtualCurrencyPacks.Call<int>("size"); i++) { using(AndroidJavaObject jnivcp = jniVirtualCurrencyPacks.Call<AndroidJavaObject>("get", i)) { vcps.Add(new VirtualCurrencyPack(jnivcp)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); return vcps; }
/// <summary> /// Fetches the virtual categories of your game. /// </summary> /// <returns>All virtual categories.</returns> protected override List<VirtualCategory> _getVirtualCategories() { List<VirtualCategory> virtualCategories = new List<VirtualCategory>(); AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniVirtualCategories = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getCategories")) { for(int i=0; i<jniVirtualCategories.Call<int>("size"); i++) { using(AndroidJavaObject jniCat = jniVirtualCategories.Call<AndroidJavaObject>("get", i)) { virtualCategories.Add(new VirtualCategory(jniCat)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); return virtualCategories; }
/// <summary> /// Gets all the upgrades for the virtual good with the given <c>goodItemId</c>. /// </summary> /// <param name="goodItemId">Item id.</param> /// <returns>All upgrades for virtual good with the given id.</returns> protected override List<UpgradeVG> _getUpgradesForVirtualGood(string goodItemId) { List<UpgradeVG> vgus = new List<UpgradeVG>(); AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniUpgradeVGs = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getGoodUpgrades")) { for(int i=0; i<jniUpgradeVGs.Call<int>("size"); i++) { using(AndroidJavaObject jnivgu = jniUpgradeVGs.Call<AndroidJavaObject>("get", i)) { vgus.Add(new UpgradeVG(jnivgu)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); return vgus; }
static void showToast(string message) { var activity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject> ("currentActivity"); activity.Call ("runOnUiThread", new AndroidJavaRunnable (() => { AndroidJavaObject toast = new AndroidJavaClass ("android.widget.Toast").CallStatic<AndroidJavaObject>("makeText", activity, message, 1); toast.Call ("show"); })); }
public static List<VirtualCurrencyPack> GetVirtualCurrencyPacks() { StoreUtils.LogDebug(TAG, "Trying to fetch packs"); List<VirtualCurrencyPack> vcps = new List<VirtualCurrencyPack>(); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniVirtualCurrencyPacks = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getCurrencyPacks")) { for(int i=0; i<jniVirtualCurrencyPacks.Call<int>("size"); i++) { using(AndroidJavaObject jnivcp = jniVirtualCurrencyPacks.Call<AndroidJavaObject>("get", i)) { vcps.Add(new VirtualCurrencyPack(jnivcp)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR IntPtr p = IntPtr.Zero; int err = storeInfo_GetVirtualCurrencyPacks(out p); IOS_ErrorCodes.CheckAndThrowException(err); string packsJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + packsJson); JSONObject packsArr = new JSONObject(packsJson); foreach(JSONObject obj in packsArr.list) { vcps.Add(new VirtualCurrencyPack(obj)); } #endif return vcps; }
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); }
//adapted from http://stackoverflow.com/questions/4553650/how-to-check-device-natural-default-orientation-on-android-i-e-get-landscape/4555528#4555528 public int GetDeviceDefaultOrientation() { if ((mWindowManager == null) || (mConfig == null)) { using (AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"). GetStatic<AndroidJavaObject>("currentActivity")) { mWindowManager = activity.Call<AndroidJavaObject>("getSystemService","window"); mConfig = activity.Call<AndroidJavaObject>("getResources").Call<AndroidJavaObject>("getConfiguration"); } } int lRotation = mWindowManager.Call<AndroidJavaObject>("getDefaultDisplay").Call<int>("getRotation"); int dOrientation = mConfig.Get<int>("orientation"); if( (((lRotation == ROTATION_0) || (lRotation == ROTATION_180)) && (dOrientation == ORIENTATION_LANDSCAPE)) || (((lRotation == ROTATION_90) || (lRotation == ROTATION_270)) && (dOrientation == ORIENTATION_PORTRAIT))) { return(LANDSCAPE); //TABLET } return (PORTRAIT); //PHONE }
public void onClickLogin() { Debug.Log("onClickLogin"); var activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); activity.Call("login"); }
public static List<VirtualGood> GetVirtualGoods() { List<VirtualGood> virtualGoods = new List<VirtualGood>(); #if UNITY_ANDROID AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniVirtualGoods = new AndroidJavaClass("com.soomla.unity.StoreInfo").CallStatic<AndroidJavaObject>("getVirtualGoods")) { for(int i=0; i<jniVirtualGoods.Call<int>("size"); i++) { AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniGood = jniVirtualGoods.Call<AndroidJavaObject>("get", i)) { virtualGoods.Add(new VirtualGood(jniGood)); } AndroidJNI.PopLocalFrame(IntPtr.Zero); } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS IntPtr p = IntPtr.Zero; int err = storeInfo_GetVirtualGoods(out p); IOS_ErrorCodes.CheckAndThrowException(err); string goodsJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); JSONObject goodsArr = new JSONObject(goodsJson); foreach(JSONObject obj in goodsArr.list) { virtualGoods.Add(new VirtualGood(obj)); } #endif return virtualGoods; }
public static List<VirtualGood> GetVirtualGoods() { StoreUtils.LogDebug(TAG, "Trying to fetch goods"); List<VirtualGood> virtualGoods = new List<VirtualGood>(); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniVirtualGoods = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getGoods")) { for(int i=0; i<jniVirtualGoods.Call<int>("size"); i++) { AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniGood = jniVirtualGoods.Call<AndroidJavaObject>("get", i)) { virtualGoods.Add((VirtualGood)VirtualItem.factoryItemFromJNI(jniGood)); } AndroidJNI.PopLocalFrame(IntPtr.Zero); } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR IntPtr p = IntPtr.Zero; int err = storeInfo_GetVirtualGoods(out p); IOS_ErrorCodes.CheckAndThrowException(err); string goodsJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + goodsJson); JSONObject goodsArr = new JSONObject(goodsJson); foreach(JSONObject obj in goodsArr.list) { virtualGoods.Add((VirtualGood)VirtualItem.factoryItemFromJSONObject(obj)); } #endif return virtualGoods; }
public static string getMacAddress() { string macAddr = ""; if (mWiFiManager == null) { using (AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity")) { mWiFiManager = activity.Call<AndroidJavaObject>("getSystemService","wifi"); } } macAddr = mWiFiManager.Call<AndroidJavaObject>("getConnectionInfo").Call<string>("getMacAddress"); return macAddr; }
public static List<UpgradeVG> GetUpgradesForVirtualGood(string goodItemId) { StoreUtils.LogDebug(TAG, "Trying to fetch upgrades for " + goodItemId); List<UpgradeVG> vgus = new List<UpgradeVG>(); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using(AndroidJavaObject jniUpgradeVGs = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic<AndroidJavaObject>("getGoodUpgrades")) { for(int i=0; i<jniUpgradeVGs.Call<int>("size"); i++) { using(AndroidJavaObject jnivgu = jniUpgradeVGs.Call<AndroidJavaObject>("get", i)) { vgus.Add(new UpgradeVG(jnivgu)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR IntPtr p = IntPtr.Zero; int err = storeInfo_GetUpgradesForVirtualGood(goodItemId, out p); IOS_ErrorCodes.CheckAndThrowException(err); string upgradesJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + upgradesJson); JSONObject upgradesArr = new JSONObject(upgradesJson); foreach(JSONObject obj in upgradesArr.list) { vgus.Add(new UpgradeVG(obj)); } #endif return vgus; }
public static object UnboxArray(AndroidJavaObject obj) { if (obj == null) { return((object)null); } AndroidJavaClass androidJavaClass = new AndroidJavaClass("java/lang/reflect/Array"); AndroidJavaObject androidJavaObject = obj.Call <AndroidJavaObject>("getClass").Call <AndroidJavaObject>("getComponentType"); string str = androidJavaObject.Call <string>("getName"); int length = androidJavaClass.Call <int>("getLength", new object[1] { (object)obj }); Array array; if (androidJavaObject.Call <bool>("IsPrimitive")) { if ("I" == str) { array = (Array) new int[length]; } else if ("Z" == str) { array = (Array) new bool[length]; } else if ("B" == str) { array = (Array) new byte[length]; } else if ("S" == str) { array = (Array) new short[length]; } else if ("J" == str) { array = (Array) new long[length]; } else if ("F" == str) { array = (Array) new float[length]; } else if ("D" == str) { array = (Array) new double[length]; } else { if (!("C" == str)) { throw new Exception("JNI; Unknown argument type '" + str + "'"); } array = (Array) new char[length]; } } else { array = !("java.lang.String" == str) ? (!("java.lang.Class" == str) ? (Array) new AndroidJavaObject[length] : (Array) new AndroidJavaClass[length]) : (Array) new string[length]; } for (int index = 0; index < length; ++index) { array.SetValue(_AndroidJNIHelper.Unbox(androidJavaClass.CallStatic <AndroidJavaObject>("get", (object)obj, (object)index)), index); } return((object)array); }
public override void Release (int uniqueId) { AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer") .GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaObject adView = this.adViewForAdViewId (uniqueId); AdViewBridgeAndroid.adViews.Remove (uniqueId); if (adView != null) { activity.Call("runOnUiThread", new AndroidJavaRunnable(() => { adView.Call ("destroy"); AndroidJavaObject parent = adView.Call<AndroidJavaObject> ("getParent"); parent.Call ("removeView", adView); })); } }
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[1] { obj }); Array array; if (!androidJavaObject2.Call <bool>("IsPrimitive", new object[0])) { array = (Array)(("java.lang.String" == text) ? ((object)new string[num]) : ((object)((!("java.lang.Class" == text)) ? new AndroidJavaObject[num] : new AndroidJavaClass[num]))); } else 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]; } for (int i = 0; i < num; i++) { array.SetValue(Unbox(androidJavaClass.CallStatic <AndroidJavaObject>("get", new object[2] { obj, i })), i); } return(array); }