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); }
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); }
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); }