让WebView仍在后台播放视频

时间:2018-12-11 11:33:31

标签: android xamarin.android

我希望在后台播放来自youtube的视频。要流式传输任何youtube视频,我只需:

         webView = FindViewById<WebView>(Resource.Id.test);
        WebSettings settings = webView.Settings;
        settings.JavaScriptEnabled = true;
        webView.SetWebChromeClient(new WebChromeClient());
        webView.LoadUrl("https://www.youtube.com/embed/jjaXCxKudIo"); // after embed las part of link after = sign 

但是,将活动置于后台会停止视频。返回后,视频将重新开始。

这不是我想要的。我希望视频继续播放,但不可见(但仍然可以听到)。

我尝试将Webview推送到服务中,但这也不起作用。 我尝试将Webview放入android通知栏中的通知中,但无法像这样初始化Webview:

       RemoteViews contentView = new RemoteViews(PackageName, Resource.Layout.Notificaion);



      WebView webView = contentView.FindViewById<WebView>(Resource.Id.test);
      WebSettings settings = webView.Settings;
      settings.JavaScriptEnabled = true;
      webView.SetWebChromeClient(new WebChromeClient());
      webView.LoadUrl("https://www.youtube.com/embed/jjaXCxKudIo"); // after embed las part of link after = sign 

这没有用,因为contentview没有“ findviewbyid”的属性

有人知道如何实现吗?

谢谢:)

1 个答案:

答案 0 :(得分:4)

如果您使用的是android 8.0之前的系统,则可以定义一个自定义的webview,然后像下面的代码一样覆盖OnWindowVisibilityChanged()方法。

class MediaWebView : WebView
{
    public MediaWebView(Context context) : base(context)
    {
    }


    protected override void OnWindowVisibilityChanged([GeneratedEnum] ViewStates visibility)
    {
       // base.OnWindowVisibilityChanged(visibility);
       if (visibility !=ViewStates.Gone) base.OnWindowVisibilityChanged(visibility);
    }


}

Android 8.0或更高版本的Android 8.0,无法实现。