diff options
Diffstat (limited to 'VideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs')
-rwxr-xr-x | VideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/VideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs b/VideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs index 51e2322..092ac45 100755 --- a/VideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs +++ b/VideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs @@ -26,11 +26,24 @@ using Android.Util; [assembly: ExportRenderer(typeof(MediaRenderingView), typeof(MediaRenderingViewRenderer))] namespace VideoPlayerLite.Android { + /// <summary> + /// MediaRenderingViewRenderer implements the VideoView Custom Renderer on the Android Platform. + /// </summary> public class MediaRenderingViewRenderer : ViewRenderer<MediaRenderingView, VideoView> { private static readonly string TAG = "VideoViewRenderer"; + /// <summary> + /// Timer for updating the playing position on the video player UI. + /// </summary> private Timer playPositionTimer; + /// <summary> + /// When the Element, which is created on the Xamarin Forms, is changed, this method is going to be invoked. + /// If the control is null, assign Android VideoView to the Control property with the SetNativeControl method. + /// If OldElement is not null, unsubscribe VideoViewCompletion event from event handler. + /// If NewElement is not null, subscribe VideoViewCompletion event to the event handler. + /// </summary> + /// <param name="e">Data of the event</param> protected override void OnElementChanged(ElementChangedEventArgs<MediaRenderingView> e) { base.OnElementChanged(e); @@ -40,7 +53,6 @@ namespace VideoPlayerLite.Android SetNativeControl(new VideoView(Context)); } - // OldElement 와 NewElement 의 순서를 바꿀것. 둘 다 있는 경우 문제 해결 if (e.OldElement != null) { Control.Completion -= VideoViewCompletion; @@ -54,6 +66,13 @@ namespace VideoPlayerLite.Android } } + /// <summary> + /// OnElementPropertyChanged method is called whenever any bindable properties in the MediaRenderingView change MediaRenderingView. + /// PlayingItem property will change VideoPlayer to start with new video item. + /// MediaRenderingView.PlayerStatus property will change when VideoPlayer receive UI control event. + /// </summary> + /// <param name="sender">The object what got the event</param> + /// <param name="e">Data of the event</param> protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); @@ -95,11 +114,20 @@ namespace VideoPlayerLite.Android } } + /// <summary> + /// It is called when playing is completed. Then, this method changes player status of mediaRendering view to the stopped status + /// </summary> + /// <param name="sender">The object what got the event</param> + /// <param name="e">Data of the event</param> private void VideoViewCompletion(object sender, System.EventArgs e) { ((IElementController)Element).SetValueFromRenderer(MediaRenderingView.CurrentStatusProperty, PlayerStatus.Stopped); } + /// <summary> + /// Creates new timer for updating plyaing position at VideoPlayer + /// Timer gets current playing position from Android VideoView every 250ms and updates the position. + /// </summary> private void StartTimer() { if (playPositionTimer != null) @@ -137,7 +165,9 @@ namespace VideoPlayerLite.Android }); }, null, 0, 250); } - + /// <summary> + /// Destroys the playing position update timer + /// </summary> private void StopTimer() { playPositionTimer?.Dispose(); |