private async void BtnClicked(object sender, EventArgs e)
        {
            result = await MediaService.Instance.OpenMediaPickerAsync(MediaType.Image);

            //  await System.Threading.Tasks.Task.Delay(1000);

            if (result.IsSuccess)
            {
                CropImage(result.FilePath);
            }

            //var actions = new string[] { "Open Camera", "Open Gallery" };
            //var action = await DisplayActionSheet("Change Picture", "Cancel", null, actions);
            //if (actions[0].Equals(action))
            //{

            //            var fileName = MediaService.Instance.GenerateUniqueFileName("jpg");
            //            var filePath = System.IO.Path.Combine(MediaService.Instance.GetPublicDirectoryPath(), fileName);
            //            result = await MediaService.Instance.TakePhotoAsync(new CameraOption() { FilePath = filePath});
            //            if (result.IsSuccess)
            //                CropImage(result.FilePath);
            //else
            //await DisplayAlert("Error", result.Message, "OK");
            //        }
            //        else if (actions[1].Equals(action))
            //        {
            //            result = await MediaService.Instance.OpenMediaPickerAsync(MediaType.Image);
            //            if (result.IsSuccess)
            //                CropImage(result.FilePath);
            //else
            //await DisplayAlert("Error", result.Message, "OK");
            //}
        }
Пример #2
0
        public void LoadImage(MediaResult result, Action <string, Texture2D> callback, int maxSize = -1)
        {
            Util.NullArgumentTest(result);
            Util.NullArgumentTest(callback);

            callback = RuntimeHelper.ToMainThread(callback);

            if (string.IsNullOrEmpty(result.Uri))
            {
                callback("Invalid image URL.", null);
                return;
            }

            var uiImage = LoadImageAtPath(result.Uri, maxSize);

            if (uiImage == null)
            {
                callback("The image couldn't be loaded.", null);
                return;
            }

            Texture2D image = TextureUtilities.Decode(UIFunctions.UIImagePNGRepresentation(uiImage.NormalizedImage).ToBytes());

            image = Resize(image, maxSize);
            callback(null, image);
        }
Пример #3
0
        public void OnNativeCallback(string error, AndroidJavaObject[] results)
        {
            if (callback == null)
            {
                return;
            }

            RuntimeHelper.RunOnMainThread(() =>
            {
                if (error != null)
                {
                    callback(error, null);
                    return;
                }

                if (results != null)
                {
                    var mediaResults = new MediaResult[results.Length];
                    for (int i = 0; i < results.Length; i++)
                    {
                        mediaResults[i] = (MediaResult) new AndroidMediaResultBridge(results[i]);
                    }

                    callback(error, mediaResults);
                    return;
                }

                callback("Unknown error.", null);
            });
        }
        public void LoadImage(MediaResult media, Action <string, Texture2D> callback, int maxSize = -1)
        {
            if (callback == null)
            {
                Debug.LogError(NullCallbackMessage);
                return;
            }

            if (nativeGallery == null)
            {
                callback(NullNativeGalleryMessage, null);
                return;
            }

            if (media == null || media.Type != MediaType.Image)
            {
                callback("Unvalid MediaResult.", null);
                return;
            }

            /// Both uris are null or empty.
            if (string.IsNullOrEmpty(media.Uri))
            {
                Debug.LogError("Couldn't find a valid uri.");
                return;
            }

            /// Try the absolute uri first.
            if (!string.IsNullOrEmpty(media.absoluteUri))
            {
                LoadImageFromAbsoluteUri(media.absoluteUri,
                                         (error, image) =>
                {
                    /// The image is loaded successfully with absolute uri,
                    /// so we just invoke the callback and return.
                    if (error == null && image != null)
                    {
                        callback(null, image);
                        return;
                    }

                    /// Try the content uri if it's available.
                    /// Even if this fails, the callback will be invoked with the error when loading with content uri.
                    if (!string.IsNullOrEmpty(media.contentUri))
                    {
                        LoadImageFromContentUri(media.contentUri, callback, maxSize);
                        return;
                    }

                    /// Otherwise there's no other choice, invoke the callback with error when loading with absolute uri.
                    callback(error, null);
                },
                                         maxSize);
                return;
            }

            /// If we can reach here, this mean only content uri is available, so just load it.
            LoadImageFromContentUri(media.contentUri, callback, maxSize);
        }
Пример #5
0
 public void UpdateWithError(string error)
 {
     this.error = error;
     model      = null;
     maxImageSizeRoot.SetActive(false);
     loadButton.gameObject.SetActive(false);
     infoText.text = error != null ? "<b>Error:</b><i>" + error + "</i>" : "Null error.";
 }
Пример #6
0
 /// <summary>
 /// 返回上传/下载结果。
 /// </summary>
 /// <returns>返回JSON对象。</returns>
 /// <param name="result">上传/下载结果。</param>
 protected IActionResult Json(MediaResult result)
 {
     if (result.Succeeded)
     {
         return(Success(new { result.Url }));
     }
     return(Error(result.Message));
 }
Пример #7
0
        public void ConstructingMediaSearchResult_WhenNoRelaseYear_ReleaseYearIsNull()
        {
            var titleResponse = Testing.Helpers.GetRandomTitleResponse();

            titleResponse.Released = null;

            var result = new MediaResult(titleResponse);

            Assert.IsNull(result.ReleaseYear);
        }
Пример #8
0
        public void CameraCallback(string error, MediaResult result)
        {
            if (result != null)
            {
                AddView(result);
                return;
            }

            AddViewWithError(error ?? "Unknown error.");
        }
Пример #9
0
        public void ConstructingMediaSearchResult_WhenNoActors_ActorsIsEmpty()
        {
            var titleResponse = Testing.Helpers.GetRandomTitleResponse();

            titleResponse.Actors = null;

            var result = new MediaResult(titleResponse);

            Assert.IsEmpty(result.Actors);
        }
Пример #10
0
 public void UpdateWithModel(MediaResult newModel)
 {
     model = newModel;
     error = null;
     maxImageSizeRoot.SetActive(model != null && error == null && model.Type == MediaType.Image && (model.Uri != null));
     loadButton.gameObject.SetActive(model != null && error == null && model.Uri != null);
     infoText.text = string.Format(
         "<b>Type:</b> <i>{0}</i> \n<b>Uri:</b> <i>{1}</i>",
         model.Type, model.Uri ?? "null");;
 }
Пример #11
0
        public void AddView(MediaResult model)
        {
            var view = Instantiate(viewPrefab, viewRoot);

            view.VideoBackground  = videoBackground;
            view.VideoControlMode = videoControlMode;
            view.VideoScalingMode = videoScalingMode;
            view.gameObject.SetActive(true);
            view.UpdateWithModel(model);
            displayedViews.Add(view);
        }
Пример #12
0
        private string ConvertReceivedData(string jsonObject, int mediaType)
        {
            MediaResult res = JsonConvert.DeserializeObject <MediaResult>(jsonObject);

            MediaDTO[] medias = res.results;
            for (int i = 0; i < medias.Length; i++)
            {
                medias[i] = medias[i].Format(mediaType);
            }
            return(JsonConvert.SerializeObject(medias));
        }
 private void TakePictureCallback(string error, MediaResult result)
 {
     if (!string.IsNullOrEmpty(error))
     {
         // TODO: show the error to them.
         Debug.Log("Error on take picture with native camera app");
     }
     else
     {
         Media.Gallery.LoadImage(result, LoadImageCallback);
     }
 }
Пример #14
0
        public void  ConstructingMediaSearchResult_WithTitleResponse_ConstructsCorrectly()
        {
            var titleResponse       = Testing.Helpers.GetRandomTitleResponse();
            var expectedReleaseYear = DateTime.Parse(titleResponse.Released).Year;
            var expectedActors      = titleResponse.Actors.Split(',').Select(actor => actor.Trim());

            var result = new MediaResult(titleResponse);

            Assert.AreEqual(titleResponse.Title, result.Title);
            Assert.AreEqual(titleResponse.ImdbID, result.IMDBId);
            Assert.AreEqual(titleResponse.Plot, result.Plot);
            Assert.AreEqual(expectedReleaseYear, result.ReleaseYear);
            Assert.AreEqual(expectedActors, result.Actors);
        }
Пример #15
0
        public void ImagePickerControllerDidFinishPickingMediaWithInfo(UIImagePickerController picker, NSDictionary <NSString, iOSObjectProxy> info)
        {
            if (CloseAndResetMatchmakerVC != null)
            {
                CloseAndResetMatchmakerVC();
            }

            MediaResult result = CreateResult(Operation, info);
            string      error  = result == null ? "Couldn't get url of the selected item." : null;

            if (CompleteCallback != null)
            {
                CompleteCallback(error, result);
            }
        }
Пример #16
0
        void OnMediaReceived(string error, MediaResult mediaReceived)
        {
            if (string.IsNullOrEmpty(error) && mediaReceived != null)
            {
                MediaResultObject contactObjectTemp = new MediaResultObject();

                contactObjectTemp.Media = mediaReceived;

                mediaObject.Value = contactObjectTemp;
                Fsm.Event(eventTarget, isSuccessEvent);
            }
            else
            {
                errorMsg.Value = error;
                Fsm.Event(eventTarget, isNotSuccessEvent);
            }
        }
Пример #17
0
        public IActionResult GetById(int id, DateTimeOffset?timestamp = null)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var status = _entityIndex.Status(ResourceType.Media, id) ?? ContentStatus.Published;

            if (!UserPermissions.IsAllowedToGet(User.Identity, status, _entityIndex.Owner(ResourceType.Media, id)))
            {
                return(Forbid());
            }

            var media = _db.Database.GetCollection <MediaElement>(ResourceType.Media.Name)
                        .AsQueryable()
                        .FirstOrDefault(x => x.Id == id);

            if (media == null)
            {
                return(NotFound());
            }

            // Media instance wasn`t modified after timestamp
            if (timestamp != null && media.Timestamp <= timestamp)
            {
                return(StatusCode(304));
            }

            var result = new MediaResult(media)
            {
                File      = GenerateFileUrl(media),
                Timestamp = _referencesIndex.LastModificationCascading(ResourceType.Media, id)
            };

            return(Ok(result));
        }
Пример #18
0
 internal static void SetResult(MediaResult result)
 {
     _tcs.TrySetResult(result);
 }
Пример #19
0
 public void LoadImage(MediaResult media, Action <string, Texture2D> callback, int maxSize = -1)
 {
     Debug.LogWarning(UnsupportedMessage);
 }
Пример #20
0
 public void AddView(MediaResult model)
 {
 }
Пример #21
0
 public void UpdateWithModel(MediaResult newModel)
 {
 }
 public void Init()
 {
     instance = new MediaResult();
 }
Пример #23
0
 public void CameraCallback(string error, MediaResult result)
 {
 }
Пример #24
0
        void AssertOMDBTitleResponseIsEqualToMediaSearchResult(OMDBTitleResponse expected, MediaResult result)
        {
            var expectedActors = expected.Actors.Split(',').Select(actor => actor.Trim());

            int?expectedReleaseYear = null;

            if (expected.Released != null)
            {
                expectedReleaseYear = DateTime.Parse(expected.Released).Year;
            }

            Assert.AreEqual(expectedActors, result.Actors);
            Assert.AreEqual(expected.ImdbID, result.IMDBId);
            Assert.AreEqual(expected.Plot, result.Plot);
            Assert.AreEqual(expectedReleaseYear, result.ReleaseYear);
            Assert.AreEqual(expected.Title, result.Title);
        }