├── git-clean.sh ├── res ├── nuget-logo.png ├── nuget-license.txt └── nuget-readme.md ├── Sample ├── Ios │ ├── Properties │ │ └── AssemblyProject.cs │ ├── iTunesArtwork │ ├── iTunesArtwork@2x │ ├── Resources │ │ ├── Default.png │ │ ├── Icon-76.png │ │ ├── Default@2x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small-40.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ ├── Default-568h@2x.png │ │ ├── Default-Portrait.png │ │ ├── Icon-Small-40@2x.png │ │ ├── Icon-Small-40@3x.png │ │ ├── Default-Portrait@2x.png │ │ └── LaunchScreen.storyboard │ ├── Entitlements.plist │ ├── Main.cs │ ├── project.json │ ├── AppDelegate.cs │ ├── Info.plist │ └── Rox.Xamarin.Video.Sample.Ios.csproj ├── Uwp │ ├── Properties │ │ ├── AssemblyProject.cs │ │ └── Default.rd.xml │ ├── Assets │ │ ├── StoreLogo.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── SplashScreen.scale-200.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Wide310x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-200.png │ │ └── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Rox.Xamarin.Video.Sample.Uwp.pfx │ ├── App.xaml │ ├── MainPage.xaml.cs │ ├── project.json │ ├── MainPage.xaml │ ├── Package.appxmanifest │ ├── App.xaml.cs │ └── Rox.Xamarin.Video.Sample.Uwp.csproj ├── Android │ ├── Resources │ │ ├── drawable │ │ │ └── icon.png │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── drawable-xxhdpi │ │ │ └── icon.png │ │ ├── layout │ │ │ ├── Toolbar.axml │ │ │ └── Tabbar.axml │ │ ├── values │ │ │ └── styles.xml │ │ └── AboutResources.txt │ ├── project.json │ ├── Properties │ │ ├── AssemblyProject.cs │ │ └── AndroidManifest.xml │ ├── Assets │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ └── Rox.Xamarin.Video.Sample.Android.csproj └── Portable │ ├── Properties │ └── AssemblyProject.cs │ ├── project.json │ ├── VideoApplication.xaml │ ├── MainView.xaml.cs │ ├── VideoApplication.xaml.cs │ ├── Rox.Xamarin.Video.Sample.Portable.csproj │ ├── MainView.xaml │ └── MainViewModel.cs ├── Shared ├── AssemblyVersion.cs └── AssemblySolution.cs ├── LICENSE ├── .gitignore ├── readme.md ├── nuget └── Rox.Video.Xamarin.nuspec └── Rox.Xamarin.Video.Sample.sln /git-clean.sh: -------------------------------------------------------------------------------- 1 | git clean -Xdf 2 | 3 | read -p "Press any key to exit" 4 | -------------------------------------------------------------------------------- /res/nuget-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/res/nuget-logo.png -------------------------------------------------------------------------------- /Sample/Ios/Properties/AssemblyProject.cs: -------------------------------------------------------------------------------- 1 | [assembly: System.Reflection.AssemblyTitle("Rox.Xamarin.Video.Sample.Ios")] -------------------------------------------------------------------------------- /Sample/Ios/iTunesArtwork: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/iTunesArtwork -------------------------------------------------------------------------------- /Sample/Uwp/Properties/AssemblyProject.cs: -------------------------------------------------------------------------------- 1 | [assembly: System.Reflection.AssemblyTitle("Rox.Xamarin.Video.Sample.Uwp")] -------------------------------------------------------------------------------- /Sample/Ios/iTunesArtwork@2x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/iTunesArtwork@2x -------------------------------------------------------------------------------- /Sample/Uwp/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Uwp/Assets/StoreLogo.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Default.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-76.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Default@2x.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-60@2x.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-60@3x.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-76@2x.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-Small.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-Small-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-Small-40.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-Small@2x.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-Small@3x.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Default-Portrait.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-Small-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-Small-40@2x.png -------------------------------------------------------------------------------- /Sample/Ios/Resources/Icon-Small-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Icon-Small-40@3x.png -------------------------------------------------------------------------------- /Sample/Android/Resources/drawable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Android/Resources/drawable/icon.png -------------------------------------------------------------------------------- /Sample/Uwp/Rox.Xamarin.Video.Sample.Uwp.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Uwp/Rox.Xamarin.Video.Sample.Uwp.pfx -------------------------------------------------------------------------------- /Sample/Ios/Resources/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Ios/Resources/Default-Portrait@2x.png -------------------------------------------------------------------------------- /Sample/Uwp/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Uwp/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Sample/Uwp/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Uwp/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Sample/Android/Resources/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Android/Resources/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /Sample/Android/Resources/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Android/Resources/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /Sample/Uwp/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Uwp/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Sample/Uwp/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Uwp/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Sample/Android/Resources/drawable-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Android/Resources/drawable-xxhdpi/icon.png -------------------------------------------------------------------------------- /Sample/Uwp/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Uwp/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Sample/Uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netfluential/Rox.Video.Xamarin/HEAD/Sample/Uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /Shared/AssemblyVersion.cs: -------------------------------------------------------------------------------- 1 | [assembly: System.Reflection.AssemblyVersion("2.1.0.0")] 2 | [assembly: System.Reflection.AssemblyFileVersion("2.1.0.0")] 3 | [assembly: System.Reflection.AssemblyInformationalVersion("2.1.0.0")] -------------------------------------------------------------------------------- /Sample/Portable/Properties/AssemblyProject.cs: -------------------------------------------------------------------------------- 1 | [assembly: System.Reflection.AssemblyTitle("Rox.Xamarin.Video.Sample.Portable")] 2 | [assembly: Xamarin.Forms.Xaml.XamlCompilation(Xamarin.Forms.Xaml.XamlCompilationOptions.Compile)] -------------------------------------------------------------------------------- /Sample/Ios/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Sample/Ios/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace Rox 4 | { 5 | public class Application 6 | { 7 | static void Main(string[] args) 8 | { 9 | UIApplication.Main(args, null, "AppDelegate"); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Sample/Ios/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Rox.Xamarin.Video": "2.1.0", 4 | "Xamarin.Forms": "2.3.2.127" 5 | }, 6 | "frameworks": { 7 | "Xamarin.iOS,Version=v1.0": {} 8 | }, 9 | "runtimes": { 10 | "win": {} 11 | } 12 | } -------------------------------------------------------------------------------- /Sample/Uwp/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /Sample/Android/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Rox.Xamarin.Video": "2.1.0", 4 | "Xamarin.Forms": "2.3.2.127" 5 | }, 6 | "frameworks": { 7 | "MonoAndroid,Version=v7.0": {} 8 | }, 9 | "runtimes": { 10 | "win": {} 11 | } 12 | } -------------------------------------------------------------------------------- /Sample/Portable/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Rox.Xamarin.Video": "2.1.0", 4 | "Xamarin.Forms": "2.3.2.127" 5 | }, 6 | "frameworks": { 7 | ".NETPortable,Version=v4.5,Profile=Profile259": {} 8 | }, 9 | "runtimes": { 10 | "win": {} 11 | } 12 | } -------------------------------------------------------------------------------- /Sample/Uwp/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Rox 2 | { 3 | public sealed partial class MainPage 4 | { 5 | public MainPage() 6 | { 7 | this.InitializeComponent(); 8 | 9 | LoadApplication(new VideoApplication()); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Sample/Android/Properties/AssemblyProject.cs: -------------------------------------------------------------------------------- 1 | [assembly: System.Reflection.AssemblyTitle("Rox.Xamarin.Video.Sample.Android")] 2 | [assembly: Android.App.UsesPermission(Android.Manifest.Permission.Internet)] 3 | [assembly: Android.App.UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] -------------------------------------------------------------------------------- /Sample/Portable/VideoApplication.xaml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Sample/Portable/MainView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Rox; 2 | using Xamarin.Forms; 3 | 4 | namespace Rox 5 | { 6 | public partial class MainView 7 | : ContentPage 8 | { 9 | public MainView() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | public VideoView GetVideoView() 15 | { 16 | return VideoView; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Sample/Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Sample/Uwp/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2", 4 | "Rox.Xamarin.Video": "2.1.0", 5 | "Xamarin.Forms": "2.3.2.127" 6 | }, 7 | "frameworks": { 8 | "uap10.0": {} 9 | }, 10 | "runtimes": { 11 | "win10-arm": {}, 12 | "win10-arm-aot": {}, 13 | "win10-x86": {}, 14 | "win10-x86-aot": {}, 15 | "win10-x64": {}, 16 | "win10-x64-aot": {} 17 | } 18 | } -------------------------------------------------------------------------------- /Sample/Android/Resources/layout/Toolbar.axml: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /Sample/Uwp/MainPage.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Sample/Android/Resources/layout/Tabbar.axml: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /Sample/Ios/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using UIKit; 3 | 4 | namespace Rox 5 | { 6 | [Register("AppDelegate")] 7 | public partial class AppDelegate 8 | : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate 9 | { 10 | public override bool FinishedLaunching(UIApplication app, NSDictionary options) 11 | { 12 | Rox.VideoIos.Init(); 13 | 14 | global::Xamarin.Forms.Forms.Init(); 15 | 16 | LoadApplication(new VideoApplication()); 17 | 18 | return base.FinishedLaunching(app, options); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /Shared/AssemblySolution.cs: -------------------------------------------------------------------------------- 1 | [assembly: System.Reflection.AssemblyProduct("Rox.Xamarin.Video")] 2 | [assembly: System.Reflection.AssemblyCompany("Rox Software Pty Ltd")] 3 | [assembly: System.Reflection.AssemblyCopyright("©2016 Rox Software Pty Ltd")] 4 | [assembly: System.Reflection.AssemblyDescription("https://www.rox.software/")] 5 | [assembly: System.Reflection.AssemblyConfiguration("")] 6 | [assembly: System.Reflection.AssemblyTrademark("")] 7 | [assembly: System.Reflection.AssemblyCulture("")] 8 | [assembly: System.Resources.NeutralResourcesLanguage("en")] 9 | [assembly: System.Runtime.InteropServices.ComVisible(false)] -------------------------------------------------------------------------------- /Sample/Android/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with you package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /Sample/Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | using Android.OS; 4 | 5 | namespace Rox 6 | { 7 | [Activity(Label = "VideoApplication", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 8 | public class MainActivity 9 | : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 10 | { 11 | protected override void OnCreate(Bundle bundle) 12 | { 13 | TabLayoutResource = Resource.Layout.Tabbar; 14 | ToolbarResource = Resource.Layout.Toolbar; 15 | 16 | base.OnCreate(bundle); 17 | 18 | global::Xamarin.Forms.Forms.Init(this, bundle); 19 | 20 | LoadApplication(new VideoApplication()); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Sample/Portable/VideoApplication.xaml.cs: -------------------------------------------------------------------------------- 1 | using Xamarin.Forms; 2 | 3 | namespace Rox 4 | { 5 | public partial class VideoApplication 6 | : Application 7 | { 8 | public VideoApplication() 9 | { 10 | InitializeComponent(); 11 | 12 | MainView mainView = new MainView(); 13 | MainViewModel mainViewModel = new MainViewModel(mainView.GetVideoView()); 14 | mainView.BindingContext = mainViewModel; 15 | 16 | MainPage = mainView; 17 | } 18 | 19 | protected override void OnStart() 20 | { 21 | // Handle when your app starts 22 | } 23 | 24 | protected override void OnSleep() 25 | { 26 | // Handle when your app sleeps 27 | } 28 | 29 | protected override void OnResume() 30 | { 31 | // Handle when your app resumes 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Rox Video Control for Xamarin.Forms 2 | 3 | The MIT License (MIT) 4 | 5 | Copyright (c) 2016-2021 AiRoBo Software 6 | 7 | All rights reserved. 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in all 17 | copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 25 | SOFTWARE. 26 | -------------------------------------------------------------------------------- /res/nuget-license.txt: -------------------------------------------------------------------------------- 1 | Rox Video for Xamarin.Forms 2 | 3 | The MIT License (MIT) 4 | 5 | Copyright (c) 2011-2021 AiRoBo Software 6 | 7 | All rights reserved. 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in all 17 | copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 25 | SOFTWARE. 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | \.vs 2 | \.vscode 3 | \bin 4 | \obj 5 | 6 | # Android 7 | Resource.Designer.cs 8 | 9 | # # Compressed 10 | # *.bak 11 | # *.trn 12 | # *.zip 13 | # *.rar 14 | # *.7z 15 | # *.iso 16 | 17 | # # Old 18 | # \packages 19 | # \[B|b]ack[U|u]p 20 | # *.csproj.user 21 | # *.lock.json 22 | # *.nuget.cache 23 | # *.nuget.props 24 | # *.nuget.targets 25 | 26 | # # Old 27 | DTAR_*/ 28 | *.suo 29 | *.user 30 | 31 | # Backup 32 | *.bak 33 | *.trn 34 | 35 | # Zip 36 | *.zip 37 | *.rar 38 | *.7z 39 | *.iso 40 | 41 | # Asp.Net Core 42 | *.lock.json 43 | *.nuget.props 44 | *.nuget.targets 45 | artifacts/ 46 | node_modules/ 47 | 48 | # Asp.Net 49 | ClientBin/ 50 | Generated_Code/ 51 | 52 | # Test project 53 | TestResults/ 54 | 55 | # Database project 56 | *.dbmdl 57 | Import Schema Logs/ 58 | 59 | # Database 60 | *.dsn 61 | *.accdb 62 | 63 | # Nuget 64 | packages/ 65 | # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets 66 | # !packages/*/build/ 67 | 68 | # Resharper 69 | _ReSharper*/ 70 | *.[Rr]e[Ss]harper 71 | 72 | # Old VS Installer 73 | # [Dd]ebug/ 74 | # [Rr]elease/ 75 | 76 | # TFS 77 | *.vspscc 78 | *.vssscc 79 | *.scc 80 | 81 | # OS 82 | Thumbs.db 83 | ehthumbs.db 84 | Desktop.ini 85 | $RECYCLE.BIN/ 86 | -------------------------------------------------------------------------------- /Sample/Uwp/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Sample/Android/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 26 | 27 | 30 | 31 | -------------------------------------------------------------------------------- /Sample/Uwp/Package.appxmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Rox.Xamarin.Video.Sample.Uwp 7 | Rox Software Pty Ltd 8 | Assets\StoreLogo.png 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ![Rox Video for Xamarin.Forms](https://raw.githubusercontent.com/pit-bob/res/dev/rox/video/xamarin/header.svg) 2 | 3 | **Rox Video for Xamarin.Forms** plays videos with native platform controls. 4 | 5 | [![Rox Video Instructions](https://raw.githubusercontent.com/pit-bob/res/dev/rox/video/instructions.svg)](https://rox.tools/video)   [![NuGet](https://raw.githubusercontent.com/pit-bob/res/dev/nuget/icon.svg)](https://www.nuget.org/packages/Rox.Xamarin.Video)   [![GitHub](https://raw.githubusercontent.com/pit-bob/res/dev/github/icon.svg)](https://github.com/ai-ro-bo/Rox.Video.Xamarin) 6 | 7 | --- 8 | If you like this software then try our related components... 9 | 10 | [![Rox Architect](https://raw.githubusercontent.com/pit-bob/res/dev/rox/architect/icon.svg)](https://rox.tools/architect)   [![Rox Layout](https://raw.githubusercontent.com/pit-bob/res/dev/rox/layout/icon.svg)](https://rox.tools/layout)   [![Rox Video](https://raw.githubusercontent.com/pit-bob/res/dev/rox/video/icon.svg)](https://rox.tools/video)   [![Rox Camera](https://raw.githubusercontent.com/pit-bob/res/dev/rox/camera/icon.svg)](https://rox.tools/camera) 11 | 12 | --- 13 | Check out some of the other stuff we do... 14 | 15 | [![Rox Tools](https://raw.githubusercontent.com/pit-bob/res/dev/rox/tools/icon.svg)](https://rox.tools)   [![NoBS Services](https://raw.githubusercontent.com/pit-bob/res/dev/nobs/icon.svg)](https://nobs.services)   [![AiRoBo.design Studio](https://raw.githubusercontent.com/pit-bob/res/dev/airobo/design/icon.svg)](https://airobo.design)   [![ai-drone-bo](https://raw.githubusercontent.com/pit-bob/res/dev/aidronebo/icon.svg)](https://airobo.software/aidronebo)   [![\wtf](https://raw.githubusercontent.com/pit-bob/res/dev/wtf/icon.svg)](https://backslash.wtf) 16 | 17 | --- 18 | *Visit us at* [![AiRoBo](https://raw.githubusercontent.com/pit-bob/res/dev/airobo/software/badge.svg)](https://airobo.software) 19 | -------------------------------------------------------------------------------- /res/nuget-readme.md: -------------------------------------------------------------------------------- 1 | ![Rox Video for Xamarin.Forms](https://raw.githubusercontent.com/pit-bob/res/dev/rox/video/xamarin/header.svg) 2 | 3 | **Rox Video for Xamarin.Forms** plays videos with native platform controls. 4 | 5 | [![Rox Video Instructions](https://raw.githubusercontent.com/pit-bob/res/dev/rox/video/instructions.svg)](https://rox.tools/video)   [![NuGet](https://raw.githubusercontent.com/pit-bob/res/dev/nuget/icon.svg)](https://www.nuget.org/packages/Rox.Xamarin.Video)   [![GitHub](https://raw.githubusercontent.com/pit-bob/res/dev/github/icon.svg)](https://github.com/ai-ro-bo/Rox.Video.Xamarin) 6 | 7 | --- 8 | If you like this software then try our related components... 9 | 10 | [![Rox Architect](https://raw.githubusercontent.com/pit-bob/res/dev/rox/architect/icon.svg)](https://rox.tools/architect)   [![Rox Layout](https://raw.githubusercontent.com/pit-bob/res/dev/rox/layout/icon.svg)](https://rox.tools/layout)   [![Rox Video](https://raw.githubusercontent.com/pit-bob/res/dev/rox/video/icon.svg)](https://rox.tools/video)   [![Rox Camera](https://raw.githubusercontent.com/pit-bob/res/dev/rox/camera/icon.svg)](https://rox.tools/camera) 11 | 12 | --- 13 | Check out some of the other stuff we do... 14 | 15 | [![Rox Tools](https://raw.githubusercontent.com/pit-bob/res/dev/rox/tools/icon.svg)](https://rox.tools)   [![NoBS Services](https://raw.githubusercontent.com/pit-bob/res/dev/nobs/icon.svg)](https://nobs.services)   [![AiRoBo.design Studio](https://raw.githubusercontent.com/pit-bob/res/dev/airobo/design/icon.svg)](https://airobo.design)   [![ai-drone-bo](https://raw.githubusercontent.com/pit-bob/res/dev/aidronebo/icon.svg)](https://airobo.software/aidronebo)   [![\wtf](https://raw.githubusercontent.com/pit-bob/res/dev/wtf/icon.svg)](https://backslash.wtf) 16 | 17 | --- 18 | *Visit us at* [![AiRoBo](https://raw.githubusercontent.com/pit-bob/res/dev/airobo/software/badge.svg)](https://airobo.software) 19 | -------------------------------------------------------------------------------- /Sample/Ios/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIDeviceFamily 6 | 7 | 1 8 | 2 9 | 10 | UISupportedInterfaceOrientations 11 | 12 | UIInterfaceOrientationPortrait 13 | UIInterfaceOrientationLandscapeLeft 14 | UIInterfaceOrientationLandscapeRight 15 | 16 | UISupportedInterfaceOrientations~ipad 17 | 18 | UIInterfaceOrientationPortrait 19 | UIInterfaceOrientationPortraitUpsideDown 20 | UIInterfaceOrientationLandscapeLeft 21 | UIInterfaceOrientationLandscapeRight 22 | 23 | MinimumOSVersion 24 | 6.0 25 | CFBundleDisplayName 26 | Rox.Xamarin.Video.Sample.Ios 27 | CFBundleIdentifier 28 | Rox.fp.Xamarin.Video.Sample 29 | CFBundleVersion 30 | 1 31 | CFBundleIconFiles 32 | 33 | Icon-60@2x.png 34 | Icon-76.png 35 | Icon-76@2x.png 36 | Default.png 37 | Default@2x.png 38 | Default-568h@2x.png 39 | Default-Portrait.png 40 | Default-Portrait@2x.png 41 | Icon-Small-40.png 42 | Icon-Small-40@2x.png 43 | Icon-Small.png 44 | Icon-Small@2x.png 45 | 46 | UILaunchStoryboardName 47 | LaunchScreen 48 | CFBundleShortVersionString 49 | 1.0 50 | NSAppTransportSecurity 51 | 52 | NSAllowsArbitraryLoads 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /Sample/Android/Resources/AboutResources.txt: -------------------------------------------------------------------------------- 1 | Images, layout descriptions, binary blobs and string dictionaries can be included 2 | in your application as resource files. Various Android APIs are designed to 3 | operate on the resource IDs instead of dealing with images, strings or binary blobs 4 | directly. 5 | 6 | For example, a sample Android app that contains a user interface layout (main.xml), 7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) 8 | would keep its resources in the "Resources" directory of the application: 9 | 10 | Resources/ 11 | drawable-hdpi/ 12 | icon.png 13 | 14 | drawable-ldpi/ 15 | icon.png 16 | 17 | drawable-mdpi/ 18 | icon.png 19 | 20 | layout/ 21 | main.xml 22 | 23 | values/ 24 | strings.xml 25 | 26 | In order to get the build system to recognize Android resources, set the build action to 27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but 28 | instead operate on resource IDs. When you compile an Android application that uses resources, 29 | the build system will package the resources for distribution and generate a class called 30 | "Resource" that contains the tokens for each one of the resources included. For example, 31 | for the above Resources layout, this is what the Resource class would expose: 32 | 33 | public class Resource { 34 | public class drawable { 35 | public const int icon = 0x123; 36 | } 37 | 38 | public class layout { 39 | public const int main = 0x456; 40 | } 41 | 42 | public class strings { 43 | public const int first_string = 0xabc; 44 | public const int second_string = 0xbcd; 45 | } 46 | } 47 | 48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main 49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first 50 | string in the dictionary file values/strings.xml. 51 | -------------------------------------------------------------------------------- /Sample/Uwp/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.ApplicationModel; 3 | using Windows.ApplicationModel.Activation; 4 | using Windows.UI.Xaml; 5 | using Windows.UI.Xaml.Controls; 6 | using Windows.UI.Xaml.Navigation; 7 | 8 | namespace Rox 9 | { 10 | sealed partial class App 11 | : Application 12 | { 13 | public App() 14 | { 15 | this.InitializeComponent(); 16 | this.Suspending += OnSuspending; 17 | } 18 | 19 | protected override void OnLaunched(LaunchActivatedEventArgs e) 20 | { 21 | 22 | #if DEBUG 23 | if (System.Diagnostics.Debugger.IsAttached) 24 | { 25 | this.DebugSettings.EnableFrameRateCounter = true; 26 | } 27 | #endif 28 | 29 | Frame rootFrame = Window.Current.Content as Frame; 30 | if (rootFrame == null) 31 | { 32 | rootFrame = new Frame(); 33 | rootFrame.NavigationFailed += OnNavigationFailed; 34 | 35 | Xamarin.Forms.Forms.Init(e); 36 | 37 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 38 | { 39 | //TODO: Load state from previously suspended application 40 | } 41 | Window.Current.Content = rootFrame; 42 | } 43 | 44 | if (rootFrame.Content == null) 45 | { 46 | rootFrame.Navigate(typeof(MainPage), e.Arguments); 47 | } 48 | Window.Current.Activate(); 49 | } 50 | 51 | private void OnNavigationFailed(object sender, NavigationFailedEventArgs e) 52 | { 53 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName); 54 | } 55 | 56 | private void OnSuspending(object sender, SuspendingEventArgs e) 57 | { 58 | var deferral = e.SuspendingOperation.GetDeferral(); 59 | 60 | //TODO: Save application state and stop any background activity 61 | 62 | deferral.Complete(); 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /nuget/Rox.Video.Xamarin.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Rox.Xamarin.Video 5 | Rox Video for Xamarin.Forms 6 | 5.0.0-alpha1 7 | 8 | AiRoBo Software 9 | res\nuget-license.txt 10 | https://rox.tools/video 11 | res\nuget-logo.png 12 | true 13 | Rox Video for Xamarin.Forms plays videos with native platform controls. 14 | res\nuget-readme.md 15 | 16 | [Version 1.0.0] 17 | * Created new solution and projects and reimplemented components on all platforms. 18 | * Changed licensed to MIT. 19 | * Provided source code in GitHub repository. 20 | * Created https://rox.tools/video/ instruction page. 21 | * Created skeleton https://rox.gallery/video/ sample page. 22 | 23 | [Build Configuration] 24 | * Visual Studio for Windows v16.11.2 25 | * Visual Studio for Mac v8.10.7.17 26 | * Windows 10 v21H1.19043.1110 27 | * macOS : Big Sur 11.5.2 28 | 29 | [Targets] 30 | * .NetStandard2.0 31 | 32 | ©2016-2021 AiRoBo Software 33 | rox video airobo rox.tools Xamarin.Forms 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Sample/Ios/Resources/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Sample/Portable/Rox.Xamarin.Video.Sample.Portable.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10.0 6 | Debug 7 | AnyCPU 8 | {3E06D134-E923-4AEF-8127-8CEF6995DC0A} 9 | Library 10 | Properties 11 | Rox 12 | Rox.Xamarin.Video.Sample.Portable 13 | v4.5 14 | Profile259 15 | 512 16 | {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 17 | 18 | 19 | true 20 | 21 | 22 | true 23 | full 24 | false 25 | bin\Debug\ 26 | DEBUG;TRACE 27 | prompt 28 | 4 29 | 30 | 31 | pdbonly 32 | true 33 | bin\Release\ 34 | TRACE 35 | prompt 36 | 4 37 | 38 | 39 | 40 | Properties\AssemblySolution.cs 41 | 42 | 43 | Properties\AssemblyVersion.cs 44 | 45 | 46 | 47 | VideoApplication.xaml 48 | 49 | 50 | MainView.xaml 51 | 52 | 53 | 54 | 55 | 56 | Designer 57 | MSBuild:UpdateDesignTimeXaml 58 | 59 | 60 | Designer 61 | MSBuild:UpdateDesignTimeXaml 62 | 63 | 64 | 65 | 66 | 67 | 68 | 75 | -------------------------------------------------------------------------------- /Sample/Portable/MainView.xaml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 32 | 33 |