Ejemplo n.º 1
0
    private static Permission GetMediaFromGallery(MediaPickCallback callback, bool imageMode, string mime, string title, int maxSize)
    {
        Permission result = RequestPermission();

        if (result == Permission.Granted && !IsMediaPickerBusy())
        {
#if !UNITY_EDITOR && UNITY_ANDROID
            object threadLock = new object();
            lock ( threadLock )
            {
                NGMediaReceiveCallbackAndroid nativeCallback = new NGMediaReceiveCallbackAndroid(threadLock);

                AJC.CallStatic("PickMedia", Context, nativeCallback, imageMode, false, mime, title);

                if (string.IsNullOrEmpty(nativeCallback.Path))
                {
                    System.Threading.Monitor.Wait(threadLock);
                }

                string path = nativeCallback.Path;
                if (string.IsNullOrEmpty(path))
                {
                    path = null;
                }

                if (callback != null)
                {
                    callback(path);
                }
            }
#elif !UNITY_EDITOR && UNITY_IOS
            NGMediaReceiveCallbackiOS.Initialize(callback);
            if (imageMode)
            {
                if (maxSize <= 0)
                {
                    maxSize = SystemInfo.maxTextureSize;
                }

                _NativeGallery_PickImage(IOSSelectedImagePath, maxSize);
            }
            else
            {
                _NativeGallery_PickVideo();
            }
#else
            if (callback != null)
            {
                callback(null);
            }
#endif
        }

        return(result);
    }
Ejemplo n.º 2
0
    private static Permission GetMediaFromGallery(MediaPickCallback callback, bool imageMode, string mime, string title)
    {
        Permission result = RequestPermission();

        if (result == Permission.Granted && !IsMediaPickerBusy())
        {
#if !UNITY_EDITOR && UNITY_ANDROID
            object threadLock = new object();
            lock ( threadLock )
            {
                NGMediaReceiveCallbackAndroid nativeCallback = new NGMediaReceiveCallbackAndroid(threadLock);

                AJC.CallStatic("PickMedia", Context, nativeCallback, imageMode, mime, title);

                if (string.IsNullOrEmpty(nativeCallback.Path))
                {
                    System.Threading.Monitor.Wait(threadLock);
                }

                string path = nativeCallback.Path;
                if (string.IsNullOrEmpty(path))
                {
                    path = null;
                }

                if (callback != null)
                {
                    callback(path);
                }
            }
#elif !UNITY_EDITOR && UNITY_IOS
            NGMediaReceiveCallbackiOS.Initialize(callback);
            if (imageMode)
            {
                _PickImage(Path.Combine(Application.temporaryCachePath, "tmp.png"));
            }
            else
            {
                _PickVideo();
            }
#else
            if (callback != null)
            {
                callback(null);
            }
#endif
        }

        return(result);
    }
Ejemplo n.º 3
0
    private static Permission GetMultipleMediaFromGallery(MediaPickMultipleCallback callback, bool imageMode, string mime, string title, int maxSize)
    {
        Permission result = RequestPermission();

        if (result == Permission.Granted && !IsMediaPickerBusy())
        {
            if (CanSelectMultipleFilesFromGallery())
            {
#if !UNITY_EDITOR && UNITY_ANDROID
                object threadLock = new object();
                lock ( threadLock )
                {
                    NGMediaReceiveCallbackAndroid nativeCallback = new NGMediaReceiveCallbackAndroid(threadLock);

                    AJC.CallStatic("PickMedia", Context, nativeCallback, imageMode, true, mime, title);

                    if (nativeCallback.Paths == null)
                    {
                        System.Threading.Monitor.Wait(threadLock);
                    }

                    string[] paths = nativeCallback.Paths;
                    if (paths != null && paths.Length == 0)
                    {
                        paths = null;
                    }

                    if (callback != null)
                    {
                        callback(paths);
                    }
                }
#else
                if (callback != null)
                {
                    callback(null);
                }
#endif
            }
            else if (callback != null)
            {
                callback(null);
            }
        }

        return(result);
    }