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);
    }
Beispiel #3
0
    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
    }
Beispiel #4
0
 /// <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);
    }
Beispiel #9
0
 /// <summary>
 /// Share directly to SMS with custom config.
 /// </summary>
 /// <param name="config">Config.</param>
 public void ShareToMessages(MegacoolShareConfig config)
 {
     _platformAgent.ShareToMessages(config);
 }
Beispiel #10
0
 /// <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");
 }
Beispiel #13
0
 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)
 {
 }
Beispiel #21
0
 private void SetupDefaultConfiguration()
 {
     DefaultShareConfig     = new MegacoolShareConfig();
     DefaultRecordingConfig = new MegacoolRecordingConfig();
 }