0

我正在使用 Android,并且有一个可以使用以下代码从 res/raw 播放电影的 videoview:

public static void startVideo(String moviename) {
    playingVideo = true;
    final String name = moviename + "x264";
    instance.runOnUiThread(new Runnable() {
        public void run() {
            instance.mVideoView.bringToFront();
            instance.mVideoView.setVisibility(View.VISIBLE);
            String uri = "android.resource://" + instance.getPackageName()
                    + "/raw/" + name;
            instance.mVideoView.setVideoURI(Uri.parse(uri));
            instance.mVideoView.requestFocus();
            instance.mVideoView.start();
        }
    });

但是,如果我在我的活动的 onCreate 方法中调用以下函数,并使用有效的资产图像文件名作为参数(即“backdrop.jpg”),视频视图似乎不再显示:

public Bitmap getBitmapFromAsset(String strName) {
    AssetManager assetManager = this.getAssets();
    InputStream is;
    Bitmap bitmap = null;
    try {
        is = assetManager.open(strName);
        bitmap = BitmapFactory.decodeStream(is);
        is.close();
    } catch (IOException e) {
        return null;
    }
    return bitmap;
}

我什至是否在任何代码中使用生成的位图都没有关系,似乎仅仅调用上述函数的行为似乎会导致视频播放器停止显示。只需注释掉仅调用该函数并将结果存储在局部变量中的行,就会导致视频视图再次开始正常显示。

此外,似乎没有其他任何影响......例如,我的程序中有一个 GLSurfaceView,它显示得很好。

我对此感到非常困惑......任何帮助将不胜感激。

提前致谢。

4

1 回答 1

0

好吧,我找到了解决方案......原来发生的事情是我的程序中的 GLSurfaceView 实际上覆盖了视频视图。我仍然不确定为什么,因为我试图明确地将视频视图置于顶部,但尽管如此,在我播放视频时保持 GLSurfacview 隐藏似乎可以接受。

于 2013-08-02T16:38:19.623 回答