Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:如何使用VirtualDisplay在壁纸服务中托管网络视图? 背景_Android_Android Webview_Live Wallpaper - Fatal编程技术网

Android:如何使用VirtualDisplay在壁纸服务中托管网络视图? 背景

Android:如何使用VirtualDisplay在壁纸服务中托管网络视图? 背景,android,android-webview,live-wallpaper,Android,Android Webview,Live Wallpaper,我有一个基于网络的动画,我已经把它变成了一个带有实时壁纸的Android应用程序: 我通过创建WebView并定期将其内容复制到WallperService的表面来实现这一点。下面是代码: …下面是我如何找到解决方案的: 在过去的四个月里,它一直工作得很好,但是WebView 76通过引入以下bug打破了实时壁纸: 这个bug正在处理中,所以我对WebView 77(将于9月10日发布)表示乐观,并将对其进行修复,但如果可能的话,尽快修复我的应用程序会很好 问题 在上面的bug报告中,一

我有一个基于网络的动画,我已经把它变成了一个带有实时壁纸的Android应用程序:

我通过创建WebView并定期将其内容复制到WallperService的表面来实现这一点。下面是代码:

…下面是我如何找到解决方案的:

在过去的四个月里,它一直工作得很好,但是WebView 76通过引入以下bug打破了实时壁纸:

这个bug正在处理中,所以我对WebView 77(将于9月10日发布)表示乐观,并将对其进行修复,但如果可能的话,尽快修复我的应用程序会很好

问题 在上面的bug报告中,一位Chromium开发人员建议使用VirtualDisplay将WebView连接到WallperService,所以现在我正在研究这个问题。我对安卓系统比较陌生,所以我做这件事很幼稚,到目前为止它还不起作用。我在这里写信寻求帮助

以下是我目前拥有的(在我的引擎的OnSurfaceChanged中(因此我可以利用它提供的宽度/高度)):

我正在使用演示文稿将VirtualDisplay连接到WebView(根据Chromium开发人员的建议),但我不确定这样做是否正确

墙纸服务运行,我没有收到任何错误,但我也没有看到我的网页;它只是一个白色的屏幕


希望我只是在做一些愚蠢的事情……请启发我!:-)

必须在对象上调用
show()
方法,否则它将不会显示在虚拟显示器上。

有什么进展吗?我正在尝试类似的东西来使用OpenGL显示WebView内容。不幸的是,没有,我还没有学到任何新东西。我想,当WebView 77在9月份下降时,这可能是一个没有意义的观点,因为我们可以使用另一种技术(当然,如果知道这种新技术是否能起作用,那当然还是很好的)。如果你发现了什么,请告诉我,我也会这么做!就是这样!这么简单的事,我却忽略了。非常感谢你!
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    super.onSurfaceChanged(holder, format, width, height);

    DisplayManager mDisplayManager = (DisplayManager)getSystemService(Context.DISPLAY_SERVICE);

    int flags = DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY;
    int density = DisplayMetrics.DENSITY_DEFAULT;

    VirtualDisplay virtualDisplay = mDisplayManager.createVirtualDisplay("MyVirtualDisplay",
        width, height, density, holder.getSurface(), flags);

    Presentation myPresentation = new Presentation(myContext, virtualDisplay.getDisplay());

    WebView myWebView = new WebView(myPresentation.getContext());
    myWebView.loadUrl("file:///android_asset/index.html");

    ViewGroup.LayoutParams params = new ViewGroup.LayoutParams (width, height);
    myPresentation.setContentView(myWebView, params);
}