Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

[Android,iOS,UWP,WPF] MediaElement control #3482

Merged
merged 110 commits into from
Jan 29, 2020
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
a8e4f47
MediaElement and iOS/Android/UWP renderers.
peterfoot Aug 2, 2018
47ce277
Added basic WPF renderer. Fixed sizing issue on UWP renderer. Added s…
peterfoot Aug 3, 2018
fb67767
MediaEnded event on UWP. Source Uri convert ms-appx to pack:// uri sc…
peterfoot Aug 3, 2018
21aa997
code style fixes
peterfoot Aug 3, 2018
5fbad13
resolving conflicts
peterfoot Aug 3, 2018
0395e22
Merge branch 'pr/1'
peterfoot Aug 3, 2018
4bdd4bb
Following discussion on PR made NaturalDuration a nullable TimeSpan s…
peterfoot Aug 6, 2018
d4e1b87
coding style fixes
peterfoot Aug 8, 2018
92d995a
coding style fixes 2
peterfoot Aug 8, 2018
cff6600
Improved media controls on demo page. Renderer enhancements for Andro…
peterfoot Aug 8, 2018
afa06ee
Improved logic around media metadata in iOS renderer.
peterfoot Aug 9, 2018
c83bc2f
Improved parsing of ms-appdata uris supporting both the local and tem…
peterfoot Aug 10, 2018
90800f6
Merge pull request #2 from xamarin/master
peterfoot Aug 23, 2018
c9954ad
Removed redundant Debug.WriteLines. Removed XML docs from MediaElemen…
peterfoot Aug 23, 2018
29962fe
Merge pull request #3 from xamarin/master
peterfoot Aug 28, 2018
61c0b1e
Bug fix for iOS MediaElement.Source Uri escape handling
peterfoot Aug 28, 2018
b3ad7e9
Adding MediaElement fast renderer for Android
peterfoot Aug 28, 2018
3a3ecfa
Merge branch 'master' of https://github.com/inthehand/Xamarin.Forms
peterfoot Aug 28, 2018
abacc1c
Rearchitecting the Element/Renderer connectivity. New WPF,UAP and And…
peterfoot Sep 9, 2018
9a7fd01
More MediaElement renderer development. Converted iOS to a FastRenderer
peterfoot Sep 10, 2018
0962414
Latest android renderer
peterfoot Sep 20, 2018
4922b3e
merged
peterfoot Sep 20, 2018
9f8ca8c
Android renderer fix for StopPlayback reusability. MetadataRetreiver …
peterfoot Sep 20, 2018
7b9582b
Added an IMediaElementController property to Android renderers to sim…
peterfoot Sep 20, 2018
ab700a8
Simplified Aspect property
peterfoot Sep 20, 2018
f1c8248
Changed AreTransportControlsEnabled to ShowsPlaybackControls. Removed…
peterfoot Oct 1, 2018
6ac42d3
merging
peterfoot Oct 1, 2018
d7e48a2
merging
peterfoot Oct 1, 2018
484e83d
Merge pull request #5 from xamarin/master
peterfoot Oct 1, 2018
21f22d0
added mediaelementrenderer back
peterfoot Oct 1, 2018
e5afdf4
support for polling the position property. Added timer to demopage to…
peterfoot Oct 1, 2018
55a4d25
Fixed scaling issue on iOS and background color
peterfoot Oct 2, 2018
3abf259
Renderer code review issues
peterfoot Oct 10, 2018
229a6d5
Implementing MediaSource (ImageSource pattern) to replace Uris. Other…
peterfoot Oct 10, 2018
2043c6f
Hooked up MediaSource and kept uri custom schema logic
peterfoot Oct 10, 2018
d41269a
Moved all the "callback" methods to the IMediaElementController inter…
peterfoot Oct 14, 2018
99e4eb4
Code review feedback
peterfoot Oct 17, 2018
f7c2a73
Integrated unit tests. Added support for inherited binding on MediaSo…
peterfoot Oct 18, 2018
69ee3da
Additional Windows file path test. Fix for UWP renderer to check if C…
peterfoot Oct 23, 2018
d2b5608
Fix for FormsVideoView metadata causing aspect issues. Simplified And…
peterfoot Oct 25, 2018
48f3533
Merge branch 'pr/6'
peterfoot Nov 7, 2018
cb79285
fixed merge error
peterfoot Nov 7, 2018
fd5e39d
fixed merge errors
peterfoot Nov 7, 2018
4266d3c
MediaElement and iOS/Android/UWP renderers.
peterfoot Aug 2, 2018
06265c8
Added basic WPF renderer. Fixed sizing issue on UWP renderer. Added s…
peterfoot Aug 3, 2018
bf6ff75
MediaEnded event on UWP. Source Uri convert ms-appx to pack:// uri sc…
peterfoot Aug 3, 2018
1261523
code style fixes
peterfoot Aug 3, 2018
10b99ac
resolving conflicts
peterfoot Aug 3, 2018
47e0a81
Following discussion on PR made NaturalDuration a nullable TimeSpan s…
peterfoot Aug 6, 2018
f6eb67f
coding style fixes
peterfoot Aug 8, 2018
5969596
coding style fixes 2
peterfoot Aug 8, 2018
dcd2ac6
Improved media controls on demo page. Renderer enhancements for Andro…
peterfoot Aug 8, 2018
b4408bb
Improved logic around media metadata in iOS renderer.
peterfoot Aug 9, 2018
8bb3774
Improved parsing of ms-appdata uris supporting both the local and tem…
peterfoot Aug 10, 2018
127b685
Removed redundant Debug.WriteLines. Removed XML docs from MediaElemen…
peterfoot Aug 23, 2018
5ee3069
Bug fix for iOS MediaElement.Source Uri escape handling
peterfoot Aug 28, 2018
cd8b7c4
Adding MediaElement fast renderer for Android
peterfoot Aug 28, 2018
3d3512c
Rearchitecting the Element/Renderer connectivity. New WPF,UAP and And…
peterfoot Sep 9, 2018
2b588a3
More MediaElement renderer development. Converted iOS to a FastRenderer
peterfoot Sep 10, 2018
c529a30
Latest android renderer
peterfoot Sep 20, 2018
65bdddd
Android renderer fix for StopPlayback reusability. MetadataRetreiver …
peterfoot Sep 20, 2018
336578c
Added an IMediaElementController property to Android renderers to sim…
peterfoot Sep 20, 2018
9d2c0b9
Simplified Aspect property
peterfoot Sep 20, 2018
db046d2
Changed AreTransportControlsEnabled to ShowsPlaybackControls. Removed…
peterfoot Oct 1, 2018
5e3d960
merging
peterfoot Oct 1, 2018
5e97b6e
support for polling the position property. Added timer to demopage to…
peterfoot Oct 1, 2018
4142246
Fixed scaling issue on iOS and background color
peterfoot Oct 2, 2018
703a5bf
Renderer code review issues
peterfoot Oct 10, 2018
39ed819
Implementing MediaSource (ImageSource pattern) to replace Uris. Other…
peterfoot Oct 10, 2018
b8157f1
Hooked up MediaSource and kept uri custom schema logic
peterfoot Oct 10, 2018
3d3f27b
Moved all the "callback" methods to the IMediaElementController inter…
peterfoot Oct 14, 2018
c144e17
Code review feedback
peterfoot Oct 17, 2018
d97217e
Integrated unit tests. Added support for inherited binding on MediaSo…
peterfoot Oct 18, 2018
24d4581
Additional Windows file path test. Fix for UWP renderer to check if C…
peterfoot Oct 23, 2018
8adbcd8
Fix for FormsVideoView metadata causing aspect issues. Simplified And…
peterfoot Oct 25, 2018
393ccb6
fixed merge error
peterfoot Nov 7, 2018
16aac58
merged
peterfoot Nov 16, 2018
65b0fbe
manual merge fixes
peterfoot Nov 16, 2018
90f2f91
Merge branch 'master' into master
peterfoot Nov 28, 2018
265c818
Fixed missing FileMediaSourceConverter
peterfoot Nov 29, 2018
ae50ae1
Merge branch 'master' of https://github.com/inthehand/Xamarin.Forms
peterfoot Nov 29, 2018
f0e91e2
Merge branch 'master' into master
peterfoot Dec 4, 2018
018ac0b
Fixed merge issue with iOS project file
peterfoot Dec 5, 2018
97f5006
Merge branch 'master' into master
peterfoot Jan 16, 2019
471d95a
Clarification to WPF Source Uri exception message
peterfoot Jan 18, 2019
0441042
Changed iOS local path to the Library path as this is not user visibl…
peterfoot Jan 19, 2019
28daaaf
Added Volume property
peterfoot Jan 19, 2019
cad275b
Merge branch 'master' into master
peterfoot Jan 28, 2019
9b52258
Fixes for code-review feedback
peterfoot Jan 28, 2019
e05fefb
Optimised iOS renderer to remove a view layer
peterfoot Feb 9, 2019
c257eb8
fixes to resolve possible rotation bug
peterfoot Feb 15, 2019
87f1227
Moved ms-appdata parsing to shared location.
peterfoot Feb 15, 2019
9110d57
Merge branch 'master' into master
peterfoot Feb 18, 2019
3891348
fixed codesign error
peterfoot Mar 1, 2019
20ede02
Merge branch 'master' of https://github.com/inthehand/Xamarin.Forms
peterfoot Mar 1, 2019
6e5f529
Merge branch 'master' into master
peterfoot May 9, 2019
66afe74
Merge remote-tracking branch 'upstream/master'
peterfoot Jun 17, 2019
5a8b6f9
Fix for issue on Android where control may show black screen prior to…
peterfoot Jul 15, 2019
15670cc
Renamed conflicting extensions class
peterfoot Jul 26, 2019
51dff05
Merge branch 'master' into master
peterfoot Sep 3, 2019
58fe68b
Merge branch 'master' into master
peterfoot Sep 11, 2019
9652da0
Merge branch 'master' into master
rmarinho Nov 27, 2019
ec41517
Merge branch 'master' into master
peterfoot Dec 19, 2019
81549b6
Add experimental flag; remove slow renderer
samhouts Jan 14, 2020
e374cf7
Update MediaElementDemoPage.cs
samhouts Jan 14, 2020
866ba9e
Update MediaElementRenderer.cs
samhouts Jan 14, 2020
98f9a06
Update MediaElementRenderer.cs
samhouts Jan 14, 2020
55bfe83
Porting latest renderer updates. iOS re-written as a non-fast rendere…
peterfoot Jan 22, 2020
04d4179
Fixed protected member in sealed class issue
peterfoot Jan 26, 2020
0466694
Merge pull request #7 from xamarin/master
peterfoot Jan 27, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Stubs/Xamarin.Forms.Platform.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@ internal class _PageRenderer { }
[RenderWith (typeof (PhoneMasterDetailRenderer))]
#endif
internal class _MasterDetailPageRenderer { }

[RenderWith (typeof(MediaElementRenderer))]
internal class _MediaElementRenderer { }
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@
<Compile Include="DisposePageRenderer.cs" />
<Compile Include="RegistrarValidationService.cs" />
<Compile Include="SampleNativeControl.cs" />
<Compile Include="_2489CustomRenderer.cs" />
<None Include="_2489CustomRenderer.cs" />
peterfoot marked this conversation as resolved.
Show resolved Hide resolved
<Compile Include="_57114Renderer.cs" />
<Compile Include="_58406EffectRenderer.cs" />
<Compile Include="_60122ImageRenderer.cs" />
Expand Down
1 change: 1 addition & 0 deletions Xamarin.Forms.Controls/CoreGallery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ public override string ToString()
new GalleryPageFactory(() => new ListRefresh(), "ListView.PullToRefresh"),
new GalleryPageFactory(() => new ListViewDemoPage(), "ListView Demo Gallery - Legacy"),
new GalleryPageFactory(() => new MapGallery(), "Map Gallery - Legacy"),
new GalleryPageFactory(() => new MediaElementDemoPage(), "MediaElement"),
new GalleryPageFactory(() => new MinimumSizeGallery(), "MinimumSize Gallery - Legacy"),
new GalleryPageFactory(() => new MultiGallery(), "Multi Gallery - Legacy"),
new GalleryPageFactory(() => new NavigationMenuGallery(), "NavigationMenu Gallery - Legacy"),
Expand Down
79 changes: 79 additions & 0 deletions Xamarin.Forms.Controls/GalleryPages/MediaElementDemoPage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace Xamarin.Forms.Controls
{
internal class MediaElementDemoPage : ContentPage
{
MediaElement element;
public MediaElementDemoPage()
{
element = new MediaElement();
element.HorizontalOptions = new LayoutOptions(LayoutAlignment.Fill,true);
element.VerticalOptions = new LayoutOptions(LayoutAlignment.Fill,true);
element.AutoPlay = false;

var label = new Label();
label.SetBinding(Label.TextProperty, new Binding("CurrentState", BindingMode.OneWay, null, null, null, element));

var playButton = new Button();
playButton.Text = "\u23f5";
playButton.HorizontalOptions = new LayoutOptions(LayoutAlignment.Center, true);
playButton.Clicked += PlayButton_Clicked;

var pauseButton = new Button();
pauseButton.Text = "\u23f8";
pauseButton.HorizontalOptions = new LayoutOptions(LayoutAlignment.Center, true);
pauseButton.Clicked += PauseButton_Clicked;

var stopButton = new Button();
stopButton.Text = "\u23f9";
stopButton.HorizontalOptions = new LayoutOptions(LayoutAlignment.Center, true);
stopButton.Clicked += StopButton_Clicked;

var mediaControlStack = new StackLayout();
mediaControlStack.Orientation = StackOrientation.Horizontal;
mediaControlStack.HorizontalOptions = new LayoutOptions(LayoutAlignment.Center, false);
mediaControlStack.Children.Add(playButton);
mediaControlStack.Children.Add(pauseButton);
mediaControlStack.Children.Add(stopButton);

var stack = new StackLayout();
stack.Padding = new Thickness(10);
stack.Spacing = 10;
stack.HorizontalOptions = new LayoutOptions(LayoutAlignment.Fill, false);
stack.VerticalOptions = new LayoutOptions(LayoutAlignment.Fill, false);
stack.Children.Add(element);
stack.Children.Add(label);
stack.Children.Add(mediaControlStack);
Content = stack;
}

private void PlayButton_Clicked(object sender, EventArgs e)
peterfoot marked this conversation as resolved.
Show resolved Hide resolved
{
System.Diagnostics.Debug.WriteLine(element.CanSeek);
element.Play();
System.Diagnostics.Debug.WriteLine(element.CanSeek);
}

private void PauseButton_Clicked(object sender, EventArgs e)
peterfoot marked this conversation as resolved.
Show resolved Hide resolved
{
element.Pause();
System.Diagnostics.Debug.WriteLine(element.CanSeek);
}

private void StopButton_Clicked(object sender, EventArgs e)
peterfoot marked this conversation as resolved.
Show resolved Hide resolved
{
element.Stop();
System.Diagnostics.Debug.WriteLine(element.CanSeek);
}

protected override void OnAppearing()
{
base.OnAppearing();

element.Source = new Uri("http://sec.ch9.ms/ch9/5d93/a1eab4bf-3288-4faf-81c4-294402a85d93/XamarinShow_mid.mp4");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How long will this video be available for this link?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure, this is a recent Channel 9 Xamarin Show episode. Happy to replace with another public video uri.

}
}
}
Loading