【问题标题】:Programmatic screenshot of a webview with flash elements带有 Flash 元素的 web 视图的程序化屏幕截图
【发布时间】:2015-04-07 03:54:10
【问题描述】:

我的问题与this question from a few years ago 类似,但该问题从未得到解答,我想知道自提出问题以来是否有任何变化。

我想以编程方式捕获具有 Flash 元素的 web 视图的屏幕截图。当我尝试使用网上最广泛描述的方法(使用view.drawview.getDrawingCache)时,flash 元素不会被捕获。我相信这与元素的软件与硬件渲染有关。请让我知道我是否基于此。

我实际上不需要在最终应用程序中执行此操作,仅在开发过程中,所以我对一些 adb 黑客持开放态度,但应用程序需要能够触发屏幕截图。

我真的很感激任何想法。

谢谢

【问题讨论】:

标签: android android-webview screenshot ddms hardware-acceleration


【解决方案1】:

你有root权限吗?如果是 - 您可以直接读取图形缓冲区,通过 /dev/graphics/fb0 访问它。

Here 正在讨论如何通过 adb 进行操作。

Here 是一篇如何以编程方式执行此操作的帖子(您需要使用 JNI 层包装代码)

【讨论】:

    【解决方案2】:

    我还没有尝试过这种方法,但理论上你不能使用反射来获取句柄

    com.android.systemui.screenshot.GlobalScreenshot
    
    void takeScreenshot(Runnable finisher, boolean statusBarVisible, boolean navBarVisible)
    

    查看此代码 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.0_r1/com/android/systemui/screenshot/GlobalScreenshot.java#GlobalScreenshot.takeScreenshot%28java.lang.Runnable%2Cboolean%2Cboolean%29

    【讨论】:

      【解决方案3】:

      以下几行应该适合你:)

      browser.setDrawingCacheEnabled(true);
         browser.buildDrawingCache();
         Bitmap bitmap = browser.getDrawingCache();
      

      【讨论】:

      • 是的,这就是我所拥有的。网页的静态部分被捕获,flash 部分只是一个黑色方块。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2019-07-10
      相关资源
      最近更新 更多