2017-05-17 3 views
-1

Ich habe eine Liste von YouTube-Videos und ich möchte Videos auf Media Player von nativen Handy.I ich bin in der Lage, Web-Browser und Youtube-App aufzurufen, kann aber Standard-Mediaplayer von Android/aufrufen IOS-Telefon.wie Media Player in Xamarin Formen

Antwort

2

Dies ist die gesamte Implementierung, die zur Implementierung von Media Player in meiner Xamarin App, die MVVM-Unterstützung hat.

  1. Zunächst einmal müssen Sie das Plugin Media Manager (Nuget oder GitHub) zu drei Ihrer Projekte (Portable, Droid und iOS) hinzuzufügen. Dafür müssen Sie mit der rechten Maustaste auf Ihr Projekt, und klicken Sie auf die Option NuGet Pakete verwalten und für Plugins

    Plugin.MediaManager Plugin.MediaManager.Forms installieren diese beiden Plugins suchen.

  2. Dann müssen Sie VideoView initialisieren, also fügen Sie diesen Code zu Ihrer MainActivity-Datei von Droid in onCreate hinzu.

    Geschützte Überschreibung void OnCreate (Bündelbündel) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Ressource.Layout.Toolbar;

    base.OnCreate(bundle); 
    
        VideoViewRenderer.Init(); 
    
        global::Xamarin.Forms.Forms.Init(this, bundle); 
    
        FileAccessHelper.CopyDatabaseIfNotExists("BizQuiz"); 
    
        LoadApplication(new App()); 
        } 
    

Jetzt eine Ansicht wie diese machen.

Dies ist meine XAML-Datei: MediaPlayer.xaml

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     x:Class="Add your class name here" 
     xmlns:local="clr-namespace:MediaForms" 
     xmlns:forms="clr- 
    namespace:Plugin.MediaManager.Forms;assembly=Plugin.MediaManager.Forms" 
     BackgroundColor="Aqua"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="4*"/> 
     <RowDefinition Height="1*"/> 
    </Grid.RowDefinitions> 
    <forms:VideoView Grid.Row="0" Grid.RowSpan="1" 
    HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" 
       Source="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" 
AspectMode="AspectFill"/> 
    <Grid HorizontalOptions="FillAndExpand" Grid.Row="1" Grid.RowSpan="1" 
Margin="20"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="1*"/> 
      <RowDefinition Height="6*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <StackLayout Grid.Row="0" Grid.ColumnSpan="3" 
    Orientation="Vertical"> 
      <StackLayout Orientation="Horizontal"> 
       <Label Text="Duration: "></Label> 
       <Label x:Name="Duration"/> 
      </StackLayout> 
      <ProgressBar x:Name="ProgressBar" Grid.ColumnSpan="3" 
    HorizontalOptions="FillAndExpand"></ProgressBar> 
     </StackLayout> 

     <Button Grid.Row="1" Grid.Column="0" TextColor="White" 
    BackgroundColor="Gray" HeightRequest="50" VerticalOptions="Center" 
    Text="Play" WidthRequest="100" Clicked="PlayClicked"></Button> 
     <Button Grid.Row="1" Grid.Column="1" TextColor="White" Text="Pause" 
    BackgroundColor="Gray" HeightRequest="50" VerticalOptions="Center" 
    WidthRequest="100" Clicked="PauseClicked"></Button> 
     <Button Grid.Row="1" Grid.Column="2" TextColor="White" Text="Stop" 
    BackgroundColor="Gray" HeightRequest="50" VerticalOptions="Center" 
     WidthRequest="100" Clicked="StopClicked"></Button> 
    </Grid> 

</Grid> 
</ContentPage>` 

Und das ist mein xaml.cs

MediaPLayer.xaml.cs

public partial class MediaPlayer : ContentPage 
    { 
    private IPlaybackController PlaybackController => 
    CrossMediaManager.Current.PlaybackController; 

    public MediaPlayer() 
    { 
     InitializeComponent(); 

     CrossMediaManager.Current.PlayingChanged += (sender, e) => 
     { 
      ProgressBar.Progress = e.Progress; 
      Duration.Text = "" + e.Duration.TotalSeconds.ToString() + " 
    seconds"; 
     }; 
    } 

    void PlayClicked(object sender, System.EventArgs e) 
    { 
     PlaybackController.Play(); 
    } 

    void PauseClicked(object sender, System.EventArgs e) 
    { 
     PlaybackController.Pause(); 
    } 

    void StopClicked(object sender, System.EventArgs e) 
    { 
     PlaybackController.Stop(); 
    } 
    } 

Datei, die alle ist, können Sie spielen das Video von URL so.

+0

Das hat mir viel Zeit gespart –

+0

Welche Assembly muss ich hinzufügen, um VideoViewRenderer.Init() zu verwenden? Es macht mich verrückt – afe

+0

Wie bereits erwähnt, müssen Sie nur Plugin.MediaManager Plugin.MediaManager.Forms Plugins von Nuget Manager hinzufügen. –