【问题标题】:VideoView won't play while context is set to WebView当上下文设置为 WebView 时,VideoView 不会播放
【发布时间】: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 的上下文,播放器就可以工作,不知道在这里做什么。干杯。

【问题讨论】:

    标签: android multithreading webview android-videoview


    【解决方案1】:

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

    比 MediaPlayer 更多的功能

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 2018-03-31
      • 2015-02-14
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      相关资源
      最近更新 更多