当上下文设置为WebView时,VideoView将无法播放

时间:2012-05-10 23:45:57

标签: android multithreading webview android-videoview

基本上,当我在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 个答案:

答案 0 :(得分:1)

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

  

比MediaPlayer更多的功能

VideoView本质上是SurfaceView和MediaPlayer的包装器。 VideoView中的额外功能应该只是与您不使用的屏幕上播放视频相关的内容。你有什么具体的理由在MediaPlayer上使用它?

但我认为你是正确的,通过改变你的活动内容,你打破了VideoView。您需要找到一种方法来执行此操作,而无需多次调用setContentView()。这里有很多可能性是两个:

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

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