public void ShareScreenshot(MegacoolRecordingConfig recordingConfig, MegacoolShareConfig shareConfig) { IntPtr recordingPointer = IntPtr.Zero; if (recordingConfig != null) { recordingPointer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MCLRecordingConfig))); MCLRecordingConfig nativeRecordingConfig = GetNativeRecordingConfig(recordingConfig); Marshal.StructureToPtr(nativeRecordingConfig, recordingPointer, false); } IntPtr sharePointer = IntPtr.Zero; if (shareConfig != null) { sharePointer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MCLShareConfig))); MCLShareConfig nativeShareConfig = GetNativeShareConfig(shareConfig); Marshal.StructureToPtr(nativeShareConfig, sharePointer, false); } mcl_share_screenshot(recordingPointer, sharePointer); if (recordingConfig != null) { Marshal.FreeHGlobal(recordingPointer); } if (shareConfig != null) { Marshal.FreeHGlobal(sharePointer); } }
public void ShareScreenshot(MegacoolRecordingConfig recordingConfig, MegacoolShareConfig shareConfig) { AndroidJavaObject jRecordingConfig = RecordingConfigToJavaObject(recordingConfig); AndroidJavaObject jShareConfig = ShareConfigToJavaObject(shareConfig); megacool.Call("shareScreenshot", CurrentActivity, null, jRecordingConfig, jShareConfig); }
public void ShareToMail(MegacoolShareConfig config) { #if UNITY_IOS && !UNITY_EDITOR presentShareToMailWithConfig(config.RecordingId, config.LastFrameOverlay, config.FallbackImage, config.Share.Url.ToString(), config.Share.Data != null ? MegacoolThirdParty_MiniJSON.Json.Serialize(config.Share.Data) : null); #elif UNITY_ANDROID && !UNITY_EDITOR AndroidWrapper.ShareToMail(config); #endif }
/// <summary> /// Take a screenshot and share it immediately. /// </summary> /// <description> /// <para> /// This is a helper around {@link #captureFrame(View)} and {@link #share(Activity)} when you /// only need to share a screenshot and not all the other bells and whistles for recordings. /// </para> /// <para> /// This method is functionally equivalent to: /// <code> /// Megacool.Instance.PauseRecording(); /// string tempRecording = "random-unused-id"; /// Megacool.Instance.CaptureFrame(new MegacoolRecordingConfig { /// RecordingId = tempRecordingId, /// MaxFrames = 1, /// }); /// Megacool.Instance.Share(new MegacoolShareConfig { /// RecordingId = tempRecordingId, /// }); /// Megacool.Instance.DeleteRecording(tempRecordingId); /// </code> /// Note that if this method is called while a recording is underway the screenshot is likely to /// be missing from the share. To stay on the safe side, leave a couple hundred ms between /// stopping a recording and sharing a screenshot. /// </para> /// </description> /// <param name="recordingConfig">The recording config, or <c>null</c>. Most properties don't /// apply to screenshots, but the last frame overlay does.</param> /// <param name="shareConfig">The share config, or <c>null</c>.</param> public void ShareScreenshot(MegacoolRecordingConfig recordingConfig = null, MegacoolShareConfig shareConfig = null) { captureManager = GetManager(); if (captureManager) { // Only try to capture if we have a manager, but always call down to the SDK to make // sure the share happens anyway captureManager.StartWrites(0); _RenderThisFrame = true; } _platformAgent.ShareScreenshot(recordingConfig, shareConfig); }
private AndroidJavaObject ShareConfigToJavaObject(MegacoolShareConfig config) { if (config == null) { return(null); } AndroidJavaObject jConfig = new AndroidJavaObject("co.megacool.megacool.ShareConfig"); if (config._HasRecordingId()) { jConfig.Call <AndroidJavaObject>("recordingId", config.RecordingId); } if (config._HasMessage()) { jConfig.Call <AndroidJavaObject>("message", config.Message); } if (config._HasStrategy()) { AndroidJavaClass strategyClass = new AndroidJavaClass("co.megacool.megacool.SharingStrategy"); AndroidJavaObject jStrategy; if (config.Strategy == MegacoolSharingStrategy.MEDIA) { jStrategy = strategyClass.GetStatic <AndroidJavaObject>("MEDIA"); } else { jStrategy = strategyClass.GetStatic <AndroidJavaObject>("LINK"); } jConfig.Call <AndroidJavaObject>("strategy", jStrategy); } if (config.FallbackImage != null) { jConfig.Call <AndroidJavaObject>("fallbackImageAsset", config.FallbackImage); } if (config.Url != null) { AndroidJavaClass jUriClass = new AndroidJavaClass("android.net.Uri"); AndroidJavaObject jUri = jUriClass.CallStatic <AndroidJavaObject>("parse", config.Url.ToString()); jConfig.Call <AndroidJavaObject>("url", jUri); } if (config.Data != null) { jConfig.Call <AndroidJavaObject>("dataAsJson", MegacoolThirdParty_MiniJSON.Json.Serialize(config.Data)); } if (config._HasModalTitle()) { jConfig.Call <AndroidJavaObject>("modalTitle", config.ModalTitle); } return(jConfig); }
public void ShareToMail(MegacoolShareConfig config) { if (config == null) { mcl_present_share_to_mail(IntPtr.Zero); return; } MCLShareConfig nativeConfig = GetNativeShareConfig(config); IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MCLShareConfig))); Marshal.StructureToPtr(nativeConfig, pointer, false); mcl_present_share_to_mail(pointer); Marshal.FreeHGlobal(pointer); }
private MCLShareConfig GetNativeShareConfig(MegacoolShareConfig config) { MCLShareConfig nativeConfig = new MCLShareConfig { strategy = -1, popover_source_rect = new MCLRect { x = -1, y = -1, width = -1, height = -1, }, popover_permitted_arrow_directions = -1, }; if (config._HasStrategy()) { nativeConfig.strategy = (int)config.Strategy; } if (config._HasMessage()) { nativeConfig.message = config.Message; } if (config._HasRecordingId()) { nativeConfig.recordingId = config.RecordingId; } if (config.Url != null) { nativeConfig.url = config.Url.ToString(); } if (config.FallbackImage != null) { nativeConfig.fallback_image = Application.streamingAssetsPath + "/" + config.FallbackImage; } if (config.Data != null) { nativeConfig.jsonData = Json.Serialize(config.Data); } if (config._HasModalLocation()) { nativeConfig.popover_source_rect.x = config.ModalLocation.x; nativeConfig.popover_source_rect.y = config.ModalLocation.y; nativeConfig.popover_source_rect.width = config.ModalLocation.width; nativeConfig.popover_source_rect.height = config.ModalLocation.height; } if (config._HasModalPermittedArrowDirections()) { nativeConfig.popover_permitted_arrow_directions = (int)config.ModalPermittedArrowDirections; } return(nativeConfig); }
public void ShareToMail(MegacoolShareConfig config) { AndroidJavaObject jConfig = ShareConfigToJavaObject(config); megacool.Call("shareToMail", CurrentActivity, jConfig); }
/// <summary> /// Share directly to SMS with custom config. /// </summary> /// <param name="config">Config.</param> public void ShareToMessages(MegacoolShareConfig config) { _platformAgent.ShareToMessages(config); }
/// <summary> /// Share directly to email with custom config. /// </summary> /// <param name="config">Config.</param> public void ShareToMail(MegacoolShareConfig config) { _platformAgent.ShareToMail(config); }
public void ShareToMessages(MegacoolShareConfig config) { ImplementationWarning("ShareToMessages"); }
public void ShareToMail(MegacoolShareConfig config) { ImplementationWarning("ShareToMail"); }
public void ShareToMail(MegacoolShareConfig config) { Android.Call("shareToMail", config.RecordingId, config.FallbackImage, config.FallbackImage, config.LastFrameOverlay, config.Share.Url.ToString(), MegacoolThirdParty_MiniJSON.Json.Serialize(config.Share.Data)); }
public void ShareScreenshot(MegacoolRecordingConfig recordingConfig, MegacoolShareConfig shareConfig) { ImplementationWarning("ShareScreenshot"); }
public void SetDefaultShareConfig(MegacoolShareConfig config) { AndroidJavaObject jConfig = ShareConfigToJavaObject(config); megacool.Call("setDefaultShareConfig", jConfig); }
public void ShareToMail(MegacoolShareConfig config) { }
public void ShareToMessages(MegacoolShareConfig config) { }
public void ShareScreenshot(MegacoolRecordingConfig recordingConfig, MegacoolShareConfig shareConfig) { }
public void Share(MegacoolShareConfig config) { }
public void SetDefaultShareConfig(MegacoolShareConfig config) { }
private void SetupDefaultConfiguration() { DefaultShareConfig = new MegacoolShareConfig(); DefaultRecordingConfig = new MegacoolRecordingConfig(); }