当上下文设置为 WebView 时,VideoView 不会播放

Posted

技术标签:

【中文标题】当上下文设置为 WebView 时,VideoView 不会播放【英文标题】:VideoView won't play while context is set to WebView 【发布时间】:2012-05-10 23:45:56 【问题描述】:

基本上,当我在 webview 中显示 .gif 时,我正在设置一个 VideoView 来播放音乐(比 MediaPlayer 更多的功能)。我不确定我是否需要多个线程或其他东西,但是每当我尝试同时运行这两个线程时,它要么崩溃,要么不播放音乐。是不是因为我的“内容视图”设置为 WebView,所以我无法访问 main.xml 上的对象(如视频视图)?

代码: setContentView(R.layout.main);

    musicPlayer = (VideoView)findViewById(R.id.player);


   //run gif
    view = new GifWebView(this, "file:///android_res/raw/kk.gif");
    setContentView(view);



  //start player

    musicPlayer.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + musicList[0]));
    musicCounter =0;

    musicPlayer.setOnCompletionListener(TrackRepeater);
    musicPlayer.requestFocus();
    musicPlayer.start();

如果我没有明显改变 WebView 的上下文,播放器就可以工作,不知道在这里做什么。干杯。

【问题讨论】:

【参考方案1】:

请详细说明您使用 VideoView 播放音乐的原因。

比 MediaPlayer 更多的功能

VideoView 本质上是 SurfaceView 和 MediaPlayer 的包装器。 VideoView 中的额外功能应该只是与在屏幕上播放视频相关的东西,您没有使用这些功能。通过 MediaPlayer 使用它的具体原因是什么?

但我认为您是对的,通过更改您的活动内容,您正在破坏 VideoView。您需要找到一种无需多次调用 setContentView() 的方法。有很多可能性这里有两种:

获取对 main.xml 布局的父视图的引用并在其上调用 .addView() 以添加 GifWebView 而不是使用它调用 setContentView()。

将 GifWebView 的声明添加到您的 xml 布局中,并以与拥有 VideoView 相同的方式获取对它的引用。

【讨论】:

以上是关于当上下文设置为 WebView 时,VideoView 不会播放的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖 webview 的文本选择上下文菜单?

android的webview下,如果设置了全屏,输入框获得焦点时,软键盘会盖住输入框,怎么破?

APPIUM ANDROID 混合应用程序:在混合应用程序中从本机导航到 Web 视图时,无法将驱动程序上下文获取为“WEBVIEW”

加载 WebView 页面时如何为警报对话框设置不同的标题?

无法在 iOS Appium 测试(AWS Device Farm)上切换到 WebView 上下文

当上下文为 nil 时,Swift Temp CoreData 对象无法设置 ivars