我认为 WebView 不适合我,因为我需要自动播放视频并无延迟或尽可能少地传递到下一个视频。
如果你想这样做,我建议你可以使用 com.google.android.youtube.player.YouTubePlayerView 来做到这一点。您可以按照步骤创建演示。
从here下载最新的YouTubeAndroidPlayerApi.jar。
创建一个 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/