是否可以在Android上让WebView音频在后台运行?

时间:2018-11-24 17:27:51

标签: c# audio xamarin.android android-webview background-process

是否可以保留来自WebView的音频,特别是在后台运行于android的嵌入式Webtorrent客户端(播放视频)?我看到了与此矛盾的答案,并且很好奇你们对这个话题的了解。我已经在android studio中看到了一些确定的答案,但是对于Xamarin却没有。

有人告诉我,WebView被认为是UI元素。因此,这使得无法在后台运行视频/音频。因此,如果是这样,您是否认为通过一些巧妙的编码,我可以重写android操作系统,以使其认为WebView仍然处于前台?

我知道可以使用MediaPlayer保持音频运行,例如,说您正在播放MP3。因此,另一种可能是使用服务来保持音频焦点。但是然后,视频会停止播放吗(因为这不能解决WebView作为UI元素的问题)?

另一种可能性是将整个应用程序移植到服务中。.但是我不确定是否可行。如果我得到的答案是正确的,那么我将努力实现它。

我不是在找你们做编码;我只是在寻找有关哪种方法(如有)/可行/最有效的指南。

这是我当前用来构建WebView的一些示例代码(不确定是否重要)

//what's on
[Activity]
//this class should be an aggregate subscription feed
public class WhatsOnActivity : Activity
{
    public override void OnBackPressed()
    {


        WebView whatsOnWebView = FindViewById<WebView>(Resource.Id.webViewWhatsOn);

        whatsOnWebView.GoBack();
    }

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.whatsOn);

        //declare webview and tell our code where to find the XAML resource
        WebView whatsOnWebView = FindViewById<WebView>(Resource.Id.webViewWhatsOn);

        whatsOnWebView.SetBackgroundColor(Android.Graphics.Color.Green);
        //set the webview client
        whatsOnWebView.SetWebViewClient(new WebViewClient());
        //load the 'whats on' url, will need webscript for curated subscribed feed
        whatsOnWebView.LoadUrl("https://www.bitchute.com/#listing-subscribed");
        //enable javascript in our webview
        whatsOnWebView.Settings.JavaScriptEnabled = true;
        //zoom control on?  This should perhaps be disabled for consistency?
        //we will leave it on for now
        whatsOnWebView.Settings.BuiltInZoomControls = true;
        whatsOnWebView.Settings.SetSupportZoom(true);
        //scrollbarsdisabled
        // subWebView.ScrollBarStyle = ScrollbarStyles.OutsideOverlay;
        whatsOnWebView.ScrollbarFadingEnabled = false;


    }
}

编辑:另外,我的开源项目可以在这里找到 https://github.com/hexag0d/bitchute_mobile_android_a2

谢谢。 =]

1 个答案:

答案 0 :(得分:0)

我觉得现在回答这个问题已经很晚了,但我正在做的项目与这个类似。 我目前正在通过前台服务调用带有 WebView 的 Activity 来处理这个项目。

这是在Service中使用Webview调用Activity的代码。 将其放入服务的 onStartCommand()

Context context = getApplicationContext();
Intent dialogIntent = new Intent(context, WebViewActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);