summaryrefslogtreecommitdiff
path: root/VideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'VideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs')
-rwxr-xr-xVideoPlayerLite/VideoPlayerLite.Android/Renderers/MediaRenderingViewRenderer.cs34
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();