Example #1
0
 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;
 }
Example #2
0
 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
             });
         })
     });
 }
Example #3
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");
			}));
		}
Example #7
0
            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);
    }
Example #9
0
    // 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");
		}
	}
Example #12
0
	//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");
	} 
Example #13
0
	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 
	}
Example #14
0
        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");
                }
            });
        }
Example #16
0
 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;
 }
Example #17
0
    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());

    }
Example #18
0
 /// <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;
 }
Example #19
0
 /// <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;
 }
Example #20
0
 /// <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;
 }
Example #21
0
 /// <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;
 }
Example #22
0
 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");
     }));
 }
Example #23
0
        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;
        }
Example #24
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);
        }
Example #25
0
	//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");
 }
Example #27
0
        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;
        }
Example #28
0
        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;
        }
Example #29
0
        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;
        }
Example #30
0
        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);
         }));
     }
 }
Example #33
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[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);
        }