Exemplo n.º 1
0
            public static bool ForceLoadLowLevelBinary()
            {
                // This is a hack that forces Android to load the .so libraries in the correct order
                #if UNITY_ANDROID && !UNITY_EDITOR

                if (FMOD.VERSION.number >= 0x00010500)
                {
                    AndroidJavaObject activity = null;

                    // First, obtain the current activity context
                    using (var actClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
                    {
                        activity = actClass.GetStatic<AndroidJavaObject>("currentActivity");
                    }

                    UnityEngine.Debug.Log("FMOD ANDROID AUDIOTRACK: " + (activity == null ? "ERROR NO ACTIVITY" : "VALID ACTIVITY!"));

                    using (var fmodJava = new AndroidJavaClass("org.fmod.FMOD"))
                    {
                        if (fmodJava != null)
                        {
                            UnityEngine.Debug.Log("FMOD ANDROID AUDIOTRACK: assigning activity to fmod java");

                            fmodJava.CallStatic("init", activity);
                        }
                        else
                        {
                            UnityEngine.Debug.Log("FMOD ANDROID AUDIOTRACK: ERROR NO FMOD JAVA");
                        }
                    }
                }

                FMOD.Studio.UnityUtil.Log("loading binaries: " + FMOD.Studio.STUDIO_VERSION.dll + " and " + FMOD.VERSION.dll);
                AndroidJavaClass jSystem = new AndroidJavaClass("java.lang.System");
                jSystem.CallStatic("loadLibrary", FMOD.VERSION.dll);
                jSystem.CallStatic("loadLibrary", FMOD.Studio.STUDIO_VERSION.dll);

                #endif

                // Hack: force the low level binary to be loaded before accessing Studio API
                #if !UNITY_IPHONE || UNITY_EDITOR
                FMOD.Studio.UnityUtil.Log("Attempting to call Memory_GetStats");
                int temp1, temp2;
                if (!ERRCHECK(FMOD.Memory.GetStats(out temp1, out temp2)))
                {
                    FMOD.Studio.UnityUtil.LogError("Memory_GetStats returned an error");
                    return false;
                }

                FMOD.Studio.UnityUtil.Log("Calling Memory_GetStats succeeded!");
                #endif

                return true;
            }
Exemplo n.º 2
0
	// Use:
	// runOnAndroidUiThread(someMethod)
	public static void runOnAndroidUiThread(Action target) {
		// Calls an Android activity on the UI Thread (needed for some interactions with Views)
		using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
			using (var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity")) {
				#if USE_ANDROID
				activity.Call("runOnUiThread", new AndroidJavaRunnable(target));
				#else
				Debug.Log("[Android] Would call [" + target + "] later on the UI thread");
				#endif
				//string a = activity.Call<string>("someNomw", param);
				//window.Call("setFlags", flagsValue, -1); // (int)0x7FFFFFFF
				//window.Call("setStatusBarColor", unchecked((int)_statusBarColor)); // for an uint
			}
		}
	}
Exemplo n.º 3
0
        public static AndroidJavaObject GetAdSizeJavaObject(AdSize adSize)
        {
            switch (adSize.AdType)
            {
            case AdSize.Type.SmartBanner:
                // AndroidJavaClass.GetStatic<AndroidJavaObject>() returns null since Unity 2019.2.
                // Creates an AdSize object by directly calling the constructor, as a workaround.
                return(new AndroidJavaObject(AdSizeClassName, -1, -2)
                       .GetStatic <AndroidJavaObject>("SMART_BANNER"));

            case AdSize.Type.AnchoredAdaptive:
                AndroidJavaClass  adSizeClass = new AndroidJavaClass(AdSizeClassName);
                AndroidJavaClass  playerClass = new AndroidJavaClass(Utils.UnityActivityClassName);
                AndroidJavaObject activity    =
                    playerClass.GetStatic <AndroidJavaObject>("currentActivity");
                switch (adSize.Orientation)
                {
                case Orientation.Landscape:
                    return(adSizeClass.CallStatic <AndroidJavaObject>("getLandscapeBannerAdSizeWithWidth", activity, adSize.Width));

                case Orientation.Portrait:
                    return(adSizeClass.CallStatic <AndroidJavaObject>("getPortraitBannerAdSizeWithWidth", activity, adSize.Width));

                case Orientation.Current:
                    return(adSizeClass.CallStatic <AndroidJavaObject>("getCurrentOrientationBannerAdSizeWithWidth", activity, adSize.Width));

                default:
                    throw new ArgumentException("Invalid Orientation provided for ad size.");
                }

            case AdSize.Type.Standard:
                return(new AndroidJavaObject(AdSizeClassName, adSize.Width, adSize.Height));

            default:
                throw new ArgumentException("Invalid AdSize.Type provided for ad size.");
            }
        }
    public bool CheckAppInstallation(string bundleId)
    {
        bool              installed = false;
        AndroidJavaClass  up        = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject ca        = up.GetStatic <AndroidJavaObject>("currentActivity");
        AndroidJavaObject pm        = ca.Call <AndroidJavaObject>("getPackageManager");

        AndroidJavaObject launchIntent = null;

        try
        {
            launchIntent = pm.Call <AndroidJavaObject>("getLaunchIntentForPackage", bundleId);
            if (launchIntent == null)
            {
                installed = false;
            }

            else
            {
                installed = true;
            }
        }

        catch (System.Exception e)
        {
            SGDebug.Exception(e);
            installed = false;
        }

        // dispose
        up.Dispose();
        ca.Dispose();
        pm.Dispose();
        launchIntent.Dispose();

        return(installed);
    }
Exemplo n.º 5
0
    public static void Init(string appID, CrittercismConfig config)
    {
#if CRITTERCISM_ANDROID
        if (isInitialized)
        {
            UnityEngine.Debug.Log("CrittercismAndroid is already initialized.");
            return;
        }

        UnityEngine.Debug.Log("Initializing Crittercism with app id " + appID);
        mCrittercismsPlugin = new AndroidJavaClass(CRITTERCISM_CLASS);

        if (mCrittercismsPlugin == null)
        {
            UnityEngine.Debug.Log("CrittercismAndroid failed to initialize.  Unable to find class " + CRITTERCISM_CLASS);
            return;
        }

        using (var cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
            using (var objActivity = cls_UnityPlayer.GetStatic <AndroidJavaObject> ("currentActivity")) {
                PluginCallStatic("initialize", objActivity, appID, config.GetAndroidConfig());
            }
        }

        // Unity does not currently support the C# UnhandledException callback.
        // They're aware of the issue.  When the fix this, we should use this instead of the log callback
        // System.AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;

        #if UNITY_5 || UNITY_5_3_OR_NEWER
        Application.logMessageReceived += OnLogMessageReceived;
        #else
        Application.RegisterLogCallback(OnLogMessageReceived);
        #endif

        isInitialized = true;
#endif
    }
Exemplo n.º 6
0
    void HideNavigationBar()
    {
                #if UNITY_ANDROID
        lock (this)
        {
            using (javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                unityActivity = javaClass.GetStatic <AndroidJavaObject>("currentActivity");
            }

            if (unityActivity == null)
            {
                return;
            }

            using (javaClass = new AndroidJavaClass("com.rak24.androidimmersivemode.Main"))
            {
                if (javaClass == null)
                {
                    return;
                }
                else
                {
                    javaObj = javaClass.CallStatic <AndroidJavaObject>("instance");
                    if (javaObj == null)
                    {
                        return;
                    }
                    unityActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
                    {
                        javaObj.Call("EnableImmersiveMode", unityActivity);
                    }));
                }
            }
        }
                #endif
    }
Exemplo n.º 7
0
    public IEnumerator ShareTextInAnroid()
    {
        var shareSubject = "Dessin Cerealis";
        var shareMessage = "Regarde comme il est beau mon dessin";

        isProcessing = true;
        if (!Application.isEditor)
        {
            //Create intent for action send
            AndroidJavaClass intentClass =
                new AndroidJavaClass("android.content.Intent");
            AndroidJavaObject intentObject =
                new AndroidJavaObject("android.content.Intent");
            intentObject.Call <AndroidJavaObject>
                ("setAction", intentClass.GetStatic <string>("ACTION_SEND"));

            //put text and subject extra
            intentObject.Call <AndroidJavaObject>("setType", "text/plain");
            intentObject.Call <AndroidJavaObject>
                ("putExtra", intentClass.GetStatic <string>("EXTRA_SUBJECT"), shareSubject);
            intentObject.Call <AndroidJavaObject>
                ("putExtra", intentClass.GetStatic <string>("EXTRA_TEXT"), shareMessage);

            //call createChooser method of activity class
            AndroidJavaClass  unity           = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity =
                unity.GetStatic <AndroidJavaObject>("currentActivity");
            AndroidJavaObject chooser =
                intentClass.CallStatic <AndroidJavaObject>
                    ("createChooser", intentObject, "Share your high score");
            currentActivity.Call("startActivity", chooser);
        }

        yield return(new WaitUntil(() => isFocus));

        isProcessing = false;
    }
Exemplo n.º 8
0
        static DisplayMetricsAndroid()
        {
            // Early out if we're not on an Android device
            if (Application.platform != RuntimePlatform.Android)
            {
                return;
            }

            // The following is equivalent to this Java code:
            //
            // metricsInstance = new DisplayMetrics();
            // UnityPlayer.currentActivity.getWindowManager().getDefaultDisplay().getMetrics(metricsInstance);
            //
            // ... which is pretty much equivalent to the code on this page:
            // http://developer.android.com/reference/android/util/DisplayMetrics.html

            using (
                AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"),
                metricsClass = new AndroidJavaClass("android.util.DisplayMetrics")
                ) {
                using (
                    AndroidJavaObject metricsInstance = new AndroidJavaObject("android.util.DisplayMetrics"),
                    activityInstance = unityPlayerClass.GetStatic <AndroidJavaObject>("currentActivity"),
                    windowManagerInstance = activityInstance.Call <AndroidJavaObject>("getWindowManager"),
                    displayInstance = windowManagerInstance.Call <AndroidJavaObject>("getDefaultDisplay")
                    ) {
                    displayInstance.Call("getMetrics", metricsInstance);
                    Density       = metricsInstance.Get <float>("density");
                    DensityDPI    = metricsInstance.Get <int>("densityDpi");
                    HeightPixels  = metricsInstance.Get <int>("heightPixels");
                    WidthPixels   = metricsInstance.Get <int>("widthPixels");
                    ScaledDensity = metricsInstance.Get <float>("scaledDensity");
                    XDPI          = metricsInstance.Get <float>("xdpi");
                    YDPI          = metricsInstance.Get <float>("ydpi");
                }
            }
        }
Exemplo n.º 9
0
 public static void Init(string apiKey, bool captureUncaughtExceptions = false)
 {
     FlurryAnalyticsAndroid.DebugLog(string.Concat(new object[]
     {
         "Init with key: ",
         apiKey,
         " capture exceptions: ",
         captureUncaughtExceptions
     }));
     if (!FlurryAnalyticsAndroid.IsAndroidPlayer())
     {
         return;
     }
     if (apiKey != null)
     {
         apiKey = apiKey.ToUpper();
     }
     if (string.IsNullOrEmpty(apiKey))
     {
         FlurryAnalyticsAndroid.DebugLogError("Android API key is null or empty, please provide valid API key");
     }
     using (AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
     {
         using (AndroidJavaObject @static = androidJavaClass.GetStatic <AndroidJavaObject>("currentActivity"))
         {
             FlurryAnalyticsAndroid.Flurry.CallStatic("setCaptureUncaughtExceptions", new object[]
             {
                 captureUncaughtExceptions
             });
             FlurryAnalyticsAndroid.Flurry.CallStatic("init", new object[]
             {
                 @static,
                 apiKey.ToUpper()
             });
         }
     }
 }
Exemplo n.º 10
0
    IEnumerator CRSaveScreenshot()
    {
        yield return(new WaitForEndOfFrame());

        // string TwoStepScreenshotPath = MobileNativeShare.SaveScreenshot("Screenshot" + System.DateTime.Now.Hour + System.DateTime.Now.Minute + System.DateTime.Now.Second);
        // Debug.Log("A new screenshot was saved at " + TwoStepScreenshotPath);

        string myFileName           = "Screenshot" + System.DateTime.Now.Hour + System.DateTime.Now.Minute + System.DateTime.Now.Second + ".png";
        string myDefaultLocation    = Application.persistentDataPath + "/" + myFileName;
        string myFolderLocation     = "/storage/emulated/0/DCIM/Parida/"; //EXAMPLE OF DIRECTLY ACCESSING A CUSTOM FOLDER OF THE GALLERY
        string myScreenshotLocation = myFolderLocation + myFileName;

        //ENSURE THAT FOLDER LOCATION EXISTS
        if (!System.IO.Directory.Exists(myFolderLocation))
        {
            System.IO.Directory.CreateDirectory(myFolderLocation);
        }
        MenuManager.Instance.viewModePanel.SetActive(false);
        yield return(new WaitForSeconds(1));

        ScreenCapture.CaptureScreenshot(myFileName);
        yield return(new WaitForSeconds(1));

        MenuManager.Instance.viewModePanel.SetActive(true);

        System.IO.File.Move(myDefaultLocation, myScreenshotLocation); //MOVE THE SCREENSHOT WHERE WE WANT IT TO BE STORED
        //REFRESHING THE ANDROID PHONE PHOTO GALLERY IS BEGUN
        AndroidJavaClass  classPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject objActivity = classPlayer.GetStatic <AndroidJavaObject>("currentActivity");
        AndroidJavaClass  classUri    = new AndroidJavaClass("android.net.Uri");
        AndroidJavaObject objIntent   = new AndroidJavaObject("android.content.Intent", new object[2] {
            "android.intent.action.MEDIA_MOUNTED", classUri.CallStatic <AndroidJavaObject>("parse", "file://" + myScreenshotLocation)
        });

        objActivity.Call("sendBroadcast", objIntent);
        //REFRESHING THE ANDROID PHONE PHOTO GALLERY IS COMPLETE
    }
Exemplo n.º 11
0
    //Returns true if YipliApp is installed, else returns false
    public static bool IsYipliAppInstalled()
    {
#if UNITY_EDITOR
        return(true);
#elif UNITY_ANDROID
        AndroidJavaObject launchIntent = null;
        try
        {
            AndroidJavaClass  up             = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ca             = up.GetStatic <AndroidJavaObject>("currentActivity");
            AndroidJavaObject packageManager = ca.Call <AndroidJavaObject>("getPackageManager");
            Debug.Log(" Quering if Yipli App is installed.");

            //if the app is installed, no errors. Else, doesn't get past next line

            launchIntent = packageManager.Call <AndroidJavaObject>("getLaunchIntentForPackage", yipliAppBundleId);
        }
        catch (Exception ex)
        {
            Debug.Log("exception" + ex.Message);
        }
        if (launchIntent == null)
        {
            Debug.Log("Yipli app is not installed.");
            return(false);
        }

        Debug.Log("Yipli App is Installed. Returning true.");
        return(true);
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR // TODO : Handle Windows flow
        Debug.Log("Yipli App validation for windows isnt required. Returning true");
        return(FileReadWrite.IsYipliPcIsInstalled());
#else
        Debug.Log("OS not supported. Returnin false.");
        return(false);
#endif
    }
Exemplo n.º 12
0
 public static void Init(string appid, bool debug, int zoneid)
 {
     try
     {
         GSDKUtils.isDebug = debug;
         GSDKUtils.Logger("gsdk mna init");
         GSDK.sGSDKPlatformClass = new AndroidJavaClass("com.tencent.gsdk.GSDKPlatform");
         AndroidJavaObject androidJavaObject = null;
         using (AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
         {
             androidJavaObject = androidJavaClass.GetStatic <AndroidJavaObject>("currentActivity");
         }
         if (GSDK.sGSDKPlatformClass != null)
         {
             androidJavaObject.Call("runOnUiThread", new object[]
             {
                 delegate
                 {
                     GSDK.sGSDKPlatformClass.CallStatic("GSDKInit", new object[]
                     {
                         appid,
                         debug,
                         zoneid
                     });
                     GSDK.sGSDKPlatformClass.CallStatic("GSDKSetObserver", new object[]
                     {
                         GSDKAndroidObserver.Instance
                     });
                 }
             });
         }
     }
     catch (Exception ex)
     {
         Debug.Log("catch ex " + ex.ToString());
     }
 }
Exemplo n.º 13
0
    protected string _ratioCalculate;       // bien string de lay 3 ky tu dau cua day so: 1.7 hoac 1.6


    // Use this for initialization
    void Awake()
    {
        // early out if we are not on an android device
        if (Application.platform != RuntimePlatform.Android)
        {
            return;
        }

        using (
            AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"),
            metricsClass = new AndroidJavaClass("android.util.DisplayMetrics")) {
            using (
                AndroidJavaObject metricsInstance = new AndroidJavaObject("android.util.DisplayMetrics"),
                activityInstance = unityPlayerClass.GetStatic <AndroidJavaObject> ("currentActivity"),
                windowManagerInstance = activityInstance.Call <AndroidJavaObject> ("getWindowManager"),
                displayInstance = windowManagerInstance.Call <AndroidJavaObject> ("getDefaultDisplay")) {
                displayInstance.Call("getMetrics", metricsInstance);
                Density       = metricsInstance.Get <float> ("density");
                DensityDPI    = metricsInstance.Get <int> ("densityDpi");
                HeightPixels  = metricsInstance.Get <int> ("heightPixels");
                WidthPixels   = metricsInstance.Get <int> ("widthPixels");
                ScaledDensity = metricsInstance.Get <float> ("scaledDensity");
                XDPI          = metricsInstance.Get <float> ("xdpi");
                YDPI          = metricsInstance.Get <float> ("ydpi");
            }
        }

        float heightOfphone = float.Parse(HeightPixels.ToString());
        float widthOfphone  = float.Parse(WidthPixels.ToString());

        //string[] lines = { heightOfphone, widthOfphone};
        //string path = Path.Combine(Application.persistentDataPath+"/", "indexofscreen.bin");
        //File.WriteAllLines (path,lines);
        _calculate      = widthOfphone / heightOfphone;
        _result         = _calculate.ToString();
        _ratioCalculate = _result.Substring(0, 6);
    }
Exemplo n.º 14
0
    public static void NewNotificationRepeat(int id, string title, string content, int day, int hour, int minute, int second)
    {
        if (Application.isEditor)
        {
        }
        else
        {
#if UNITY_ANDROID
            //android 不能设置重复 只能设置一定次数..
            AndroidJavaClass  dsActivity      = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActicity = dsActivity.GetStatic <AndroidJavaObject>("currentActivity");
            for (int i = 0; i < 10; i++)
            {
                currentActicity.Call("NewNotificationRepeat", new object[] { id, title, content, i * day, hour, minute, second });
            }
#endif
#if UNITY_IPHONE
            //IOS 可以直接设置重复..
            if (day == 7)
            {
                IOS_NotificationMessageRepeat(content, hour, minute, second, CalendarUnit.Week);
            }
            else if (day == 30)
            {
                IOS_NotificationMessageRepeat(content, hour, minute, second, CalendarUnit.Month);
            }
            else if (day == 365)
            {
                IOS_NotificationMessageRepeat(content, hour, minute, second, CalendarUnit.Year);
            }
            else
            {
                IOS_NotificationMessageRepeat(content, hour, minute, second, CalendarUnit.Day);
            }
#endif
        }
    }
Exemplo n.º 15
0
    public void OpenAndroidGallery()
    {
        #region [ Intent intent = new Intent(); ]

        //instantiate the class Intent
        AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
        //instantiate the object Intent
        AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");

        #endregion [ Intent intent = new Intent(); ]

        #region [ intent.setAction(Intent.ACTION_PICK); ]
        //call setAction setting ACTION_SEND as parameter
        intentObject.Call <AndroidJavaObject>("setAction", intentClass.GetStatic <string>("ACTION_PICK"));
        #endregion [ intent.setAction(Intent.ACTION_PICK); ]

        #region [ intent.setData(Uri.parse("content:        //media/internal/images/media")); ]
        //instantiate the class Uri
        AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
        //instantiate the object Uri with the parse of the url's file
        AndroidJavaObject uriObject = uriClass.CallStatic <AndroidJavaObject>("parse", "content://media/internal/images/media");
        //call putExtra with the uri object of the file
        intentObject.Call <AndroidJavaObject>("putExtra", intentClass.GetStatic <string>("EXTRA_STREAM"), uriObject);
        #endregion [ intent.setData(Uri.parse("content:        //media/internal/images/media")); ]

        //set the type of file
        intentObject.Call <AndroidJavaObject>("setType", "image/jpeg");

        #region [ startActivity(intent); ]
        //instantiate the class UnityPlayer
        AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        //instantiate the object currentActivity
        AndroidJavaObject currentActivity = unity.GetStatic <AndroidJavaObject>("currentActivity");
        //call the activity with our Intent
        currentActivity.Call("startActivity", intentObject);
        #endregion [ startActivity(intent); ]
    }
Exemplo n.º 16
0
    public IEnumerator ShareScreenshotInAnroid()
    {
        isProcessing = true;
        yield return(new WaitForEndOfFrame());

        yield return(new WaitForSecondsRealtime(0.25f));

        string screenShotPath = Application.persistentDataPath + "/" + screenshotName;

        ScreenCapture.CaptureScreenshot(screenshotName, 1);
        yield return(new WaitForSecondsRealtime(0.25f));

        if (!Application.isEditor)
        {
            AndroidJavaClass  intentClass  = new AndroidJavaClass("android.content.Intent");
            AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");

            intentObject.Call <AndroidJavaObject>("setAction", intentClass.GetStatic <string>("ACTION_SEND"));

            AndroidJavaClass  uriClass  = new AndroidJavaClass("android.net.Uri");
            AndroidJavaObject uriObject = uriClass.CallStatic <AndroidJavaObject>("parse", "file://" + screenShotPath);

            intentObject.Call <AndroidJavaObject>("putExtra", intentClass.GetStatic <string>("EXTRA_STREAM"), uriObject);
            intentObject.Call <AndroidJavaObject>("setType", "image/png");
            intentObject.Call <AndroidJavaObject>("putExtra", intentClass.GetStatic <string>("EXTRA_SUBJECT"), shareSubject);
            intentObject.Call <AndroidJavaObject>("putExtra", intentClass.GetStatic <string>("EXTRA_TEXT"), shareMessage);

            AndroidJavaClass  unity           = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity = unity.GetStatic <AndroidJavaObject>("currentActivity");
            AndroidJavaObject chooser         = intentClass.CallStatic <AndroidJavaObject>("createChooser", intentObject, "Share your high score");
            currentActivity.Call("startActivity", chooser);
        }

        yield return(new WaitUntil(() => isFocus));

        isProcessing = false;
    }
Exemplo n.º 17
0
    void opponentPictureLoaded(string id)
    {
        //print("got pic");
        using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
            using (AndroidJavaObject obj_Activity = cls_UnityPlayer.GetStatic <AndroidJavaObject>("currentActivity")) {
                AndroidJavaClass cls_CompassActivity = new AndroidJavaClass("com.tapinator.tank.simulator.MainActivity");
                byte[]           byteArray           = cls_CompassActivity.CallStatic <byte[]>("getOpponentImage", id);

                if (byteArray == null)
                {
                    return;
                }
                //print ("1");
                //foreach (OpponentData op in opponents) {
                for (int i = 0; i < opponents.Count; i++)
                {
                    OpponentData op = (OpponentData)opponents[i];
                    //print ("2");
                    if (op.opponentID.Equals(id))
                    {
                        //print ("3");
                        Texture2D tex = new Texture2D(4, 4);
                        tex.LoadImage(byteArray);
                        op.opponentPicture = tex;
                        //print ("4");
                        if (mPictureCallBacks != null)
                        {
                            //print ("5");
                            mPictureCallBacks.OpponentPictureLoaded(id, tex);
                        }

                        break;
                    }
                }
            }
        }
    }
Exemplo n.º 18
0
    IEnumerator ShareScreenshot()
    {
        isProcessing = true;

        yield return(new WaitForEndOfFrame());

        ScreenCapture.CaptureScreenshot("screenshot.png", 2);
        string destination = Path.Combine(Application.persistentDataPath, "screenshot.png");

        yield return(new WaitForSecondsRealtime(0.3f));

        if (!Application.isEditor)
        {
            AndroidJavaClass  intentClass  = new AndroidJavaClass("android.content.Intent");
            AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
            intentObject.Call <AndroidJavaObject>("setAction", intentClass.GetStatic <string>("ACTION_SEND"));
            AndroidJavaClass  uriClass  = new AndroidJavaClass("android.net.Uri");
            AndroidJavaObject uriObject = uriClass.CallStatic <AndroidJavaObject>("parse", "file://" + destination);
            intentObject.Call <AndroidJavaObject>("putExtra", intentClass.GetStatic <string>("EXTRA_STREAM"),
                                                  uriObject);
            intentObject.Call <AndroidJavaObject>("putExtra", intentClass.GetStatic <string>("EXTRA_TEXT"),
                                                  "Can you beat my score?");
            intentObject.Call <AndroidJavaObject>("setType", "image/jpeg");
            AndroidJavaClass  unity           = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity = unity.GetStatic <AndroidJavaObject>("currentActivity");
            AndroidJavaObject chooser         = intentClass.CallStatic <AndroidJavaObject>("createChooser",
                                                                                           intentObject, "Share your new score");
            currentActivity.Call("startActivity", chooser);

            yield return(new WaitForSecondsRealtime(1));
        }

        yield return(new WaitUntil(() => isFocus));

        // CanvasShareObj.SetActive(false);
        isProcessing = false;
    }
Exemplo n.º 19
0
        public static void OpenFile(string url, string dataType = "application/pdf")
        {
            AndroidJavaObject clazz           = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity = clazz.GetStatic <AndroidJavaObject>("currentActivity");

            AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent");

            intent.Call <AndroidJavaObject>("addFlags", intent.GetStatic <int>("FLAG_GRANT_READ_URI_PERMISSION"));
            intent.Call <AndroidJavaObject>("setAction", intent.GetStatic <string>("ACTION_VIEW"));

            var apiLevel = new AndroidJavaClass("android.os.Build$VERSION").GetStatic <int>("SDK_INT");

            AndroidJavaObject uri;

            if (apiLevel > 23)
            {
                AndroidJavaClass  fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");
                AndroidJavaObject file         = new AndroidJavaObject("java.io.File", url);

                AndroidJavaObject unityContext = currentActivity.Call <AndroidJavaObject>("getApplicationContext");
                string            packageName  = unityContext.Call <string>("getPackageName");
                string            authority    = packageName + ".fileprovider";

                uri = fileProvider.CallStatic <AndroidJavaObject>("getUriForFile", unityContext, authority, file);
            }
            else
            {
                var uriClazz = new AndroidJavaClass("android.net.Uri");
                var file     = new AndroidJavaObject("java.io.File", url);
                uri = uriClazz.CallStatic <AndroidJavaObject>("fromFile", file);
            }

            intent.Call <AndroidJavaObject>("setType", dataType);
            intent.Call <AndroidJavaObject>("setData", uri);

            currentActivity.Call("startActivity", intent);
        }
Exemplo n.º 20
0
    private static void AndroidConfigure(string token, string bundleId, string unitName)
    {
        if (!dre_initialized)
        {
            AndroidInitializePlugin();
        }
        // Prepare call arguments.
        class_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

        var j_activity = class_UnityPlayer.GetStatic <AndroidJavaObject>("currentActivity");
        var j_token    = AndroidJNI.NewStringUTF(token);
        var j_bundleId = AndroidJNI.NewStringUTF(bundleId);
        var j_unitName = AndroidJNI.NewStringUTF(unitName);

        // Call UnityDre.configure( token, bundleId, unitName )
        jvalue[] args = new jvalue[4];
        args[0].l = j_activity.GetRawObject();
        args[1].l = j_token;
        args[2].l = j_bundleId;
        args[3].l = j_unitName;

        AndroidJNI.CallStaticVoidMethod(class_UnityDre, method_configure, args);
        configured = true;
    }
Exemplo n.º 21
0
    public IEnumerator TakeScreenshot()
    {
        Debug.Log("Capture");
        yield return(new WaitForEndOfFrame());


        string name                 = System.DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
        string myFilename           = name + ".png";
        string myDefaultLocation    = Application.persistentDataPath + "/" + myFilename;
        string myFolderLocation     = Application.persistentDataPath + "/../../../../DCIM/Camera/";
        string myScreenshotLocation = myFolderLocation + myFilename;

        if (!System.IO.Directory.Exists(myFolderLocation))
        {
            System.IO.Directory.CreateDirectory(myFolderLocation);
        }

        Application.CaptureScreenshot(myFilename);
        yield return(new WaitForSeconds(1.5f));

        print("myDefaultLocation " + myDefaultLocation);
        print("myScreenshotLocation " + myScreenshotLocation);

        System.IO.File.Move(myDefaultLocation, myScreenshotLocation);
        print("hahaha");

        AndroidJavaClass  classPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject objActivity = classPlayer.GetStatic <AndroidJavaObject>("currentActivity");
        AndroidJavaClass  classUri    = new AndroidJavaClass("android.net.Uri");
        AndroidJavaObject objIntent   = new AndroidJavaObject("android.content.Intent", new object[2] {
            "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
            classUri.CallStatic <AndroidJavaObject>("parse", "file://" + myScreenshotLocation)
        });

        objActivity.Call("sendBroadcast", objIntent);
    }
Exemplo n.º 22
0
    void Init()
    {
                #if UNITY_ANDROID && !UNITY_EDITOR
        Debug.Log("FB: init");
        if (contextActivity == null)
        {
            using (var actClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                contextActivity = actClass.GetStatic <AndroidJavaObject>("currentActivity");
                Debug.Log("FB: init");
            }

            using (var pluginClass = new AndroidJavaClass("vn.brine.facebookunity.UnityController"))
            {
                if (pluginClass != null)
                {
                    pluginObject = pluginClass.CallStatic <AndroidJavaObject>("getInstance");
                    pluginObject.Call("setActivity", contextActivity);
                    Debug.Log("FB: init");
                }
            }
        }
                #endif
    }
Exemplo n.º 23
0
    IEnumerator SendPostWeChatPay(string _url, WWWForm _wForm)
    {
        WWW postData = new WWW(_url, _wForm);

        yield return(postData);

        if (postData.error != null)
        {
            Debug.Log("Unity 网络请求失败:" + postData.error);
        }
        else
        {
            Debug.Log("Unity 网络请求成功:" + postData.text);
            string js  = postData.text;
            int    inx = js.IndexOf("\"Data\"") + 7;
            int    end = js.LastIndexOf("}}");
            js = js.Substring(inx, end - inx + 1);
            Debug.Log(js);
            AndroidJavaClass  jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject jo = jc.GetStatic <AndroidJavaObject> ("currentActivity");
            //调用对应方法
            jo.Call("reqWXPay", js);
        }
    }
        /// <summary>Gets the access token currently associated with the Unity activity.</summary>
        /// <returns>The OAuth 2.0 access token.</returns>
        public string GetAccessToken()
        {
            if (!this.IsAuthenticated())
            {
                Debug.Log("Cannot get API client - not authenticated");
                return(null);
            }

            string token = null;
            string email = GetUserEmail() ?? "NULL";
            string scope = "oauth2:https://www.googleapis.com/auth/plus.me";

            using (AndroidJavaClass unityActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"),
                   googleAuthUtil = new AndroidJavaClass("com.google.android.gms.auth.GoogleAuthUtil"))
            {
                using (AndroidJavaObject currentActivity =
                           unityActivity.GetStatic <AndroidJavaObject>("currentActivity"))
                {
                    token = googleAuthUtil.CallStatic <string>("getToken", currentActivity, email, scope);
                }
            }

            return(token);
        }
Exemplo n.º 25
0
    public static void ChengYoufloatWindow(string uid, string oid, string serverid, string serverName, string roleid, string roleName, string mToken)
    {
        if (Application.isEditor)
        {
            return;
        }
#if UNITY_ANDROID
        using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
            using (AndroidJavaObject jo = jc.GetStatic <AndroidJavaObject>("currentActivity"))
            {
                string [] stringArray = new string[7];
                stringArray[0] = uid;
                stringArray[1] = oid;
                stringArray[2] = serverid;
                stringArray[3] = serverName;
                stringArray[4] = roleid;
                stringArray[5] = roleName;
                stringArray[6] = mToken;
                jo.Call("ChengYoufloatWindow", stringArray);
            }
        }
#endif
    }
Exemplo n.º 26
0
    /*
     * public IEnumerator CaptureScreen()
     * {
     *
     *      yield return new WaitForEndOfFrame();
     *
     *
     *
     *      string screenshotFilename = "Green_" + System.DateTime.Now.ToString("yyyy-MM-dd-HHmmss") + ".JPG";
     *      string DefaultPath = Application.persistentDataPath;
     *
     *      Application.CaptureScreenshot (screenshotFilename);
     *
     *      if (Application.platform == RuntimePlatform.Android) {
     *
     *              string myFolderLocation = "/sdcard/DCIM/Green/";
     *
     *
     *              if (!System.IO.Directory.Exists(myFolderLocation))
     *              {
     *                      System.IO.Directory.CreateDirectory(myFolderLocation);
     *              }
     *
     *              Path = myFolderLocation + screenshotFilename;
     *
     *      }
     *
     *
     *
     *      shot = true;
     *
     *
     *
     *
     *      ssButton.SetActive (true);
     *      backButton.SetActive (true);
     *      testColor.SetActive (true);
     *      colorButton.SetActive (true);
     *      Slider_T.SetActive (true);
     *      Text_t.SetActive (true);
     *      Slider_S.SetActive (true);
     *      Text_S.SetActive (true);
     *
     *
     *
     *
     *
     *
     * }
     *
     */


    void UpdateGallery()
    {
        ActiveUrl = movePath;

        // string action = Intent.ACTION_MEDIA_SCANNER_SCAN_FILE
        AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
        string           action      = intentClass.GetStatic <string>("ACTION_MEDIA_SCANNER_SCAN_FILE");

        // Intent intentObject = new Intent(action);
        AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent", action);

        // Uri uriObject = Uri.parse("file:" + filePath);
        AndroidJavaClass  uriClass  = new AndroidJavaClass("android.net.Uri");
        AndroidJavaObject uriObject = uriClass.CallStatic <AndroidJavaObject>("parse", "file://" + movePath);

        // intentObject.setData(uriObject);
        intentObject.Call <AndroidJavaObject>("setData", uriObject);

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

        currentActivity.Call("sendBroadcast", intentObject);
    }
        private void AdaptPhoneScreenSize()
        {
            AndroidJavaClass  j = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity = j.GetStatic <AndroidJavaObject>("currentActivity");
            AndroidJavaObject displayManager  = currentActivity.Call <AndroidJavaObject>("getSystemService", new AndroidJavaObject("java.lang.String", "display"));
            AndroidJavaObject display         = displayManager.Call <AndroidJavaObject>("getDisplay", 0);
            AndroidJavaObject outSize         = new AndroidJavaObject("android.graphics.Point");

            display.Call("getRealSize", outSize);
            float _real_screen_width  = outSize.Get <int>("x");
            float _real_screen_height = outSize.Get <int>("y");

            _touch_area_x_min = -0.93f;
            _touch_area_x_max = 0.93f;
            float _real_touch_area_top    = _real_screen_height - (Design_Phone_Screen_Height - Design_Touch_Area_Top) * _real_screen_width / Design_Phone_Screen_Width;
            float _real_touch_area_bottom = _real_screen_height - (Design_Phone_Screen_Height - Design_Touch_Area_Bottom) * _real_screen_width / Design_Phone_Screen_Width;

            _touch_area_y_min    = _real_touch_area_bottom / _real_screen_height;
            _touch_area_y_max    = _real_touch_area_top / _real_screen_height;
            _touch_area_y_min    = -(_touch_area_y_min - 0.5f) * 2f; // value range maps to  -1f ~ 1f
            _touch_area_y_max    = -(_touch_area_y_max - 0.5f) * 2f; // value range maps to  -1f ~ 1f
            _touch_area_y_center = (_touch_area_y_min + _touch_area_y_max) / 2f;
            _screen_adapted      = true;
        }
Exemplo n.º 28
0
        public void Initialize(string accessToken)
        {
            using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                _activityContext = activityClass.GetStatic <AndroidJavaObject>("currentActivity");
            }

            if (null == _activityContext)
            {
                Debug.LogError("Could not get current activity");
                return;
            }

            using (AndroidJavaClass MapboxAndroidTelem = new AndroidJavaClass("com.mapbox.services.android.telemetry.MapboxTelemetry"))
            {
                if (null == MapboxAndroidTelem)
                {
                    Debug.LogError("Could not get class 'MapboxTelemetry'");
                    return;
                }

                _telemInstance = MapboxAndroidTelem.CallStatic <AndroidJavaObject>("getInstance");
                if (null == _telemInstance)
                {
                    Debug.LogError("Could not get MapboxTelemetry instance");
                    return;
                }

                _telemInstance.Call(
                    "initialize"
                    , _activityContext
                    , accessToken
                    , "MapboxEventsUnityAndroid/" + Constants.SDK_VERSION
                    );
            }
        }
Exemplo n.º 29
0
 public static void FetchOBB()
 {
     using (AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
     {
         AndroidJavaObject @static           = androidJavaClass.GetStatic <AndroidJavaObject>("currentActivity");
         AndroidJavaObject androidJavaObject = new AndroidJavaObject("android.content.Intent", @static, new AndroidJavaClass("com.unity3d.plugin.downloader.UnityDownloaderActivity"));
         int num = 65536;
         androidJavaObject.Call <AndroidJavaObject>("addFlags", new object[1] {
             num
         });
         androidJavaObject.Call <AndroidJavaObject>("putExtra", new object[2]
         {
             "unityplayer.Activity",
             @static.Call <AndroidJavaObject>("getClass", new object[0]).Call <string>("getName", new object[0])
         });
         @static.Call("startActivity", androidJavaObject);
         if (AndroidJNI.ExceptionOccurred() != IntPtr.Zero)
         {
             Debug.LogError("Exception occurred while attempting to start DownloaderActivity - is the AndroidManifest.xml incorrect?");
             AndroidJNI.ExceptionDescribe();
             AndroidJNI.ExceptionClear();
         }
     }
 }
Exemplo n.º 30
0
    public bool init()
    {
#if UNITY_IPHONE
        GPG_Init(appID + ".apps.googleusercontent.com");
        GPG_SetGameObjectName(name);
        return(true);
#elif UNITY_ANDROID
        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        mCurrentActivity = unityPlayer.GetStatic <AndroidJavaObject> ("currentActivity");
        Debug.Log("Current activity " + mCurrentActivity);
        mNerdGPG = new AndroidJavaObject("com.nerdiacs.nerdgpgplugin.NerdGPG");
        if (mCurrentActivity != null && mNerdGPG != null)
        {
            mNerdGPG.Set <bool>("mDebugLog", true);           // enable logging
            mNerdGPG.SetStatic <string>("gameObjectName", name);
            mNerdGPG.Call <bool>("init", mCurrentActivity);
            return(true);
        }
        else
        {
            return(false);
        }
#endif
    }
Exemplo n.º 31
0
        public AndroidAssetStream(string fileName)
        {
            var noCompressExt = new string[] {
                ".jpg", ".jpeg", ".png", ".gif",
                ".wav", ".mp2", ".mp3", ".ogg", ".aac",
                ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet",
                ".rtttl", ".imy", ".xmf", ".mp4", ".m4a",
                ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2",
                ".amr", ".awb", ".wma", ".wmv"
            };

            var ext = System.IO.Path.GetExtension(fileName);

            using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                using (var activity = unityPlayer.GetStatic <AndroidJavaObject>("currentActivity"))
                {
                    using (var assetManager = activity.Call <AndroidJavaObject>("getAssets")) //android.content.res.AssetManager
                    {
                        if (Array.Exists <string>(noCompressExt, (obj) => { return(obj == ext); }))
                        {
                            using (var assetFileDescriptor = assetManager.Call <AndroidJavaObject>("openFd", fileName)) //assets/ //android.content.res.AssetFileDescriptor
                            {
                                AndroidInputStreamLength = assetFileDescriptor.Call <long>("getLength");
                            }
                        }
                        AndroidInputStream = assetManager.Call <AndroidJavaObject>("open", fileName);
                    }
                }
            }

            if (AndroidInputStream == null)
            {
                throw new System.IO.FileNotFoundException("getAssets failed", fileName);
            }
        }
Exemplo n.º 32
0
    public void GetData()
    {
        GUIDisplayer.ShowDebug("Calling GetData()");
        Debug.Log("Calling GetData()");
        text.text = text.text + "\nCalling GetData()";
                #if UNITY_ANDROID
        using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
            activityContext = activityClass.GetStatic <AndroidJavaObject>("currentActivity");
        }

        using (pluginClass = new AndroidJavaClass("com.bugdev.asus.app_2.MainActivity")) {
            if (pluginClass != null)
            {
                javaObj = pluginClass.CallStatic <AndroidJavaObject>("instance");
                javaObj.Call("setContext", activityContext);

                string data = javaObj.Call <string>("GetData");
                Debug.Log("Data : " + data);
                GUIDisplayer.ShowDebug("Data : " + data);
                text.text = text.text + "\nData : " + data;
            }
        }
                #endif
    }
    public void HasChanged()
    {
        cont_items_ubicados_correct = 0;
        cont_items_en_slots = 0;
        lista_objetos = new int[8];//OJO CADA FASE TIENE UN NUMERO DIFERENTE DE PASOS
        int contad = 0;
        Debug.Log ("Se ha notificado de un cambio en CanvasProcessManagerEval organizando pasos");
        foreach (Transform slotTransform in slots) {
            item_slot = slotTransform.GetComponent<SlotsBehaviourMenuStepsPhaseTwo>().slot_con_objeto_correcto;
            id_paso = slotTransform.GetComponent<SlotsBehaviourMenuStepsPhaseTwo>().id_of_step_in_slot;
            lista_objetos[contad] = id_paso;
            contad++;
            //Debug.Log ("Se ha obtenido el componente SlotsBehaviour en CanvasProcessManagerEval organizando pasos");
            if(item_slot){
                Debug.Log ("Los pasos estan correctamente ordenados en CanvasProcessManagerEval organizando pasos");
                cont_items_ubicados_correct++;
            }
            if(slotTransform.childCount > 0){
                cont_items_en_slots++;
            }
        }
        Debug.Log ("CanvasProcessPhasesManagEval: Cantidad de items correctamente ubicados: " + cont_items_ubicados_correct);
        Debug.Log ("Cantidad de items en slots:" + cont_items_en_slots);
        if (cont_items_ubicados_correct == 8)
            items_ubicados_correctamente = true;
        else
            items_ubicados_correctamente = false;

        Debug.Log ("CanvasProcessPhasesManagEval: Se va a definir en el manager organizacion correcta de fases = " + items_ubicados_correctamente);
        if (items_ubicados_correctamente) {
            if (tickCorrectOrder != null){
                tickCorrectOrder.GetComponent<Image>().sprite = img_tick;
                tickCorrectOrder.enabled = true;
            }
            this.NotifyStepsOrganized (true);

            if(!steps_organized_from_manager){
                Debug.Log ("Ingresa al metodo para bloquear los pasos por organizacion automatica del appmanager");
                //inactivando los pasos para que el estudiante no pueda acceder a cualquier otro sino al primero
                //inicialmente:

                if(imgs_gray_random.Length >= 8){
                    Debug.Log ("Ingresa a deshabilitar los botones ");
                    Debug.Log ("Numero step_btn_one=" + step_number_btn_one);
                    if(step_number_btn_one != 1)
                        this.btn_one_to_order.interactable = false;
                    img_gray_step = Resources.Load<Sprite>(imgs_gray_random[0]);
                    if(img_gray_step != null)
                        this.btn_one_to_order.GetComponent<Image>().sprite = img_gray_step;

                    Debug.Log ("Numero step_btn_two=" + step_number_btn_two);
                    if(step_number_btn_two != 1){
                        this.btn_two_to_order.interactable = false;
                    }
                    img_gray_step = Resources.Load<Sprite>(imgs_gray_random[1]);
                    if(img_gray_step != null)
                        this.btn_two_to_order.GetComponent<Image>().sprite = img_gray_step;

                    Debug.Log ("Numero step_btn_three=" + step_number_btn_three);
                    if(step_number_btn_three != 1){
                        this.btn_three_to_order.interactable = false;
                    }
                    img_gray_step = Resources.Load<Sprite>(imgs_gray_random[2]);
                    if(img_gray_step != null)
                        this.btn_three_to_order.GetComponent<Image>().sprite = img_gray_step;

                    Debug.Log ("Numero step_btn_four=" + step_number_btn_four);
                    if(step_number_btn_four != 1){
                        this.btn_four_to_order.interactable = false;
                    }
                    img_gray_step = Resources.Load<Sprite>(imgs_gray_random[3]);
                    if(img_gray_step != null)
                        this.btn_four_to_order.GetComponent<Image>().sprite = img_gray_step;

                    Debug.Log ("Numero step_btn_five=" + step_number_btn_five);
                    if(step_number_btn_five != 1){
                        this.btn_five_to_order.interactable = false;
                    }
                    img_gray_step = Resources.Load<Sprite>(imgs_gray_random[4]);
                    if(img_gray_step != null)
                        this.btn_five_to_order.GetComponent<Image>().sprite = img_gray_step;

                    Debug.Log ("Numero step_btn_six=" + step_number_btn_six);
                    if(step_number_btn_six != 1){
                        this.btn_six_to_order.interactable = false;
                    }
                    img_gray_step = Resources.Load<Sprite>(imgs_gray_random[5]);
                    if(img_gray_step != null)
                        this.btn_six_to_order.GetComponent<Image>().sprite = img_gray_step;

                    Debug.Log ("Numero step_btn_seven=" + step_number_btn_seven);
                    if(step_number_btn_seven != 1){
                        this.btn_seven_to_order.interactable = false;
                    }
                    img_gray_step = Resources.Load<Sprite>(imgs_gray_random[6]);
                    if(img_gray_step != null)
                        this.btn_seven_to_order.GetComponent<Image>().sprite = img_gray_step;

                    Debug.Log ("Numero step_btn_eight=" + step_number_btn_eight);
                    if(step_number_btn_eight != 1){
                        this.btn_eight_to_order.interactable = false;
                    }
                    img_gray_step = Resources.Load<Sprite>(imgs_gray_random[7]);
                    if(img_gray_step != null)
                        this.btn_eight_to_order.GetComponent<Image>().sprite = img_gray_step;

                } else {
                    Debug.Log ("MenuOfStepsPhaseOneManager: El vector de imagenes en GRIS es NULO");
                }
            }//cierra if interno que valida si se ha pedido organizar los pasos desde el app-manager
        } else {
            if (tickCorrectOrder != null)
                tickCorrectOrder.enabled = false;
            if(cont_items_en_slots == 8){
                tickCorrectOrder.GetComponent<Image>().sprite = img_warning;
                tickCorrectOrder.enabled = true;
            }
            this.NotifyStepsOrganized (false);
        }

        Debug.Log ("MenuOfStepsPhaseTwoEval: Los items estan correctamente ubicados? = " + items_ubicados_correctamente);
        //se va a obtener la secuencia del orden de pasos
        secuencia_pasos = "";
        if (lista_objetos.Length >= 8 && cont_items_en_slots >= 8) {
            //recorriendo la secuencia de pasos como esta organizados actualmente:
            Debug.Log ("La capacidad de la lista es: " + lista_objetos.Length );
            for (int i=0; i<lista_objetos.Length; i++) {
                Debug.Log ("Secuencia de pasos en i= "+i+"= " + lista_objetos [i]);
                elemento_secuencia = lista_objetos [i].ToString();
                if (i == 0)
                    secuencia_pasos = secuencia_pasos + elemento_secuencia;
                else
                    secuencia_pasos = secuencia_pasos + "-" + elemento_secuencia;
            }

            //intentando guardar en la BD:
            Debug.Log ("Se va a solicitar guardar la secuencia en la BD:");
            var and_unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            var current_act = and_unity.GetStatic<AndroidJavaObject>("currentActivity");
            Debug.Log("Se ha obtenido current activity...");
            // Accessing the class to call a static method on it
            var save_todb_activity = new AndroidJavaClass("edu.udg.bcds.pintura.arapp.SaveDatabaseData");
            Debug.Log ("Se ha obtenido StartActivity...");
            Debug.Log ("Se va a intentar obtener la fecha...");
            string fecha = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            Debug.Log ("La fecha obtenida es: " + fecha);

            object[] parameters = new object[3];
            parameters [0] = current_act; //pasando el argumento de la actividad actual que se debe reproducir
            parameters [1] = fecha; //pasando el argumento de la fecha y hora actual
            parameters [2] = secuencia_pasos; //enviando
            // Se llama al metodo estatico de android que almacena la secuencia en la base de datos:
            save_todb_activity.CallStatic("SaveStepsPhaseTwoSeqToDB", parameters);

        } else {
            Debug.Log ("La lista de elementos para la secuencia aun NO ESTA COMPLETA items_en_slots =" + cont_items_en_slots );
        }
    }