【问题标题】:Xamarin Forms show Youtube videoXamarin Forms 显示 Youtube 视频
【发布时间】:2020-01-11 08:57:07
【问题描述】:

我有一个适用于 Xamarin Forms 的应用程序,我需要添加一个功能来显示 youtube 播放器(播放和暂停)。至少目前仅适用于 Android 用户。

我认为 WebView 不适合我,因为我需要自动播放视频并无延迟或尽可能少地传递到下一个视频。

我在 SO 和 Google 上搜索过这个,但我到现在都没有用,例如

【问题讨论】:

  • 你试过这个XPlat.YouTubePlayer 吗?或者,您可以实现自己的 Xamarin Video Player,并将 YT 视频作为源。
  • @FabriBertani XPlat.YouTubePlayer 似乎是为 Xamarin 设计的,我不知道如何将它改编成 Xamarin Forms。 Xamarin 视频播放器:它可能是一个不错的选择,让我看看并告诉你
  • @FabriBertani ???? Xamarin 视频播放器工作。谢谢!!!

标签: xamarin.forms android-youtube-api


【解决方案1】:

我认为 WebView 不适合我,因为我需要自动播放视频并无延迟或尽可能少地传递到下一个视频。

如果你想这样做,我建议你可以使用 com.google.android.youtube.player.YouTubePlayerView 来做到这一点。您可以按照步骤创建演示。

  1. 从here下载最新的YouTubeAndroidPlayerApi.jar。

  2. 创建一个 Android Java 绑定库项目。创建项目后,右键单击“Jars”文件夹 -> 添加现有项 -> 添加 YouTubeAndroidPlayerApi.jar,单击 YouTubeAndroidPlayerApi.jar 的属性并标记BuildAction 为“EmbeddedJar”。

3.新建一个Xamarin Android项目,引用我们创建的Library项目,为应用添加“Internet”权限。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
 <com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/youtube_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</LinearLayout>


 public class MainActivity : YouTubeBaseActivity, IYouTubePlayerOnInitializedListener
{
    private int RECOVERY_DIALOG_REQUEST = 1;

    public void OnInitializationFailure(IYouTubePlayerProvider provider, YouTubeInitializationResult errorReason)
    {
        if (errorReason.IsUserRecoverableError)
        {
            errorReason.GetErrorDialog(this, RECOVERY_DIALOG_REQUEST).Show();
        }
        else
        {
            String errorMessage = String.Format(
                    GetString(Resource.String.ErrorMessage), errorReason.ToString());
            Toast.MakeText(this, errorMessage, ToastLength.Long).Show();
        }
    }
    public void OnInitializationSuccess(IYouTubePlayerProvider p0, IYouTubePlayer yPlayer, bool p2)
    {
        if(!p2)
        {
            //load list video
            yPlayer.CueVideos(DevConstants.list);
        }
         //load single video
        //yPlayer.LoadVideo(DevConstants.VIDEO_ID);
    }

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);
        YouTubePlayerView youTubeView = FindViewById<YouTubePlayerView>(Resource.Id.youtube_view);
        youTubeView.Initialize(DevConstants.DEVELOPER_KEY, this);
    }
}

 public static class DevConstants
{
    public static string DEVELOPER_KEY = "your developer key";
    public static string VIDEO_ID = "DHHY8m3rEzU";

    public static List<string> list = new List<string>()
    {
        "DHHY8m3rEzU","luDyX0kYzY4"
    };
}

如果还有问题,请尝试在 Tramsforms Metadata.xml 中添加这一行

 <remove-node path="/api/package[@name='com.google.android.youtube.player']/class[@name='YouTubeThumbnailView']/method[@name='finalize' and count(parameter)=0]" />

更多详细信息,请看:

https://poojargaonkar.wordpress.com/2015/08/13/playing-youtube-videos-in-xamarin-android-app-part-2/

更多功能,你可以看看:

https://blog.nishanil.com/2014/08/14/youtube-android-player-for-xamarin-android/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2015-10-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 2019-08-28
相关资源
最近更新 更多