void HandleCameraFinishedPickingMedia (object sender, UIImagePickerMediaPickedEventArgs e)
{
UIApplication.SharedApplication.InvokeOnMainThread (delegate {
IPhoneServiceLocator.CurrentDelegate.MainUIViewController ().DismissModalViewController(true);
});
SystemLogger.Log(SystemLogger.Module.PLATFORM, "Camera FinishedPickingMedia " + e.Info);
MediaMetadata mediaData = new MediaMetadata();
try {
NSString mediaType = (NSString) e.Info.ValueForKey(UIImagePickerController.MediaType);
UIImage image = (UIImage) e.Info.ValueForKey(UIImagePickerController.OriginalImage);
if(image != null && mediaType !=null && mediaType == "public.image") { // "public.image" is the default UTI (uniform type) for images.
mediaData.Type = MediaType.Photo;
mediaData.MimeType = MediaMetadata.GetMimeTypeFromExtension(".jpg");
mediaData.Title = (image.GetHashCode() & 0x7FFFFFFF) + ".JPG";
NSData imageData = image.AsJPEG();
if(imageData !=null) {
mediaData.Size = (long)imageData.Length;
SystemLogger.Log(SystemLogger.Module.PLATFORM, "Getting image file size: "+mediaData.Size);
SystemLogger.Log(SystemLogger.Module.PLATFORM, "Getting image data raw data...");
byte[] buffer = new byte[imageData.Length];
Marshal.Copy(imageData.Bytes, buffer,0,buffer.Length);
if(cameraOptions!=null) {
buffer = ResizeImage(buffer, image.Size.Width / cameraOptions.ImageScaleFactor , image.Size.Height / cameraOptions.ImageScaleFactor);
SystemLogger.Log(SystemLogger.Module.PLATFORM, "Getting image file size (SCALED by " + cameraOptions.ImageScaleFactor + "): "+buffer.Length);
mediaData.Size = (long)buffer.Length;
SystemLogger.Log(SystemLogger.Module.PLATFORM, "Getting image file size (SCALED): "+mediaData.Size);
}
IFileSystem fileSystemService = (IFileSystem)IPhoneServiceLocator.GetInstance ().GetService ("file");
SystemLogger.Log(SystemLogger.Module.CORE, "Storing media file on application filesystem...");
mediaData.ReferenceUrl = fileSystemService.StoreFile(IPhoneMedia.ASSETS_PATH, mediaData.Title, buffer);
}
SystemLogger.Log(SystemLogger.Module.PLATFORM, mediaData.MimeType + ", "+ mediaData.ReferenceUrl + ", " + mediaData.Title);
}
} catch(Exception ex) {
SystemLogger.Log(SystemLogger.Module.PLATFORM, "Error when extracting information from media file: " + ex.Message, ex);
}
IPhoneUtils.GetInstance().FireUnityJavascriptEvent("Appverse.Media.onFinishedPickingImage", mediaData);
}