是否可以拍摄WeemoVideoInFrame的屏幕截图?我试过下面的代码,它给了我。我想我需要获取有关Surface的参考才能拍摄屏幕截图,但是真的没有办法实现吗?有人可以推荐一种解决方法吗?

    view.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);

最佳答案

不幸的是,用于渲染视频帧的内部View是TextureView,因此您不能请求图形缓存(TextureView是HardwareAccelerated)。
此外,the documentation指定:


  公开最终无效抽奖(画布画布)
  
  TextureView的子类不能自己做
  使用Canvas对象进行渲染。


因此,您的draw()调用对TextureView无效。

也许您可以尝试在内部TextureView上使用getBitmap()方法,但我不能保证您可以使用。
目前,Weemo SDK中没有此类功能,但我们正在研究以提供一种更方便的方式来捕获这些帧。

另外,对我们来说,更好地了解您的用例将很有趣。也许您可以分享更多您想要达到的目标。这可以帮助我们设计最适合您需求的新SDK功能。

编辑:
要获得对此TextureView的引用,只需浏览视图层次结构。
例如,您可以这样做:

WeemoVideoInFrame videoFrame = getView().findViewById(R.id.video_frame);
findTextureView(videoFrame);

/* ... */

TextureView findTextureView(WeemoVideoInFrame frame) {
    for (int index = 0; index < frame.getChildCount(); index++) {
        View child = frame.getChildAt(index);
        if(child instanceof TextureView) {
            return (TextureView) child;
        }
    }
    return null;
}


但是请记住,这种行为无法得到保证。

关于android - android Weemo SDK拍摄WeemoVideoInFrame的屏幕截图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25066215/

10-09 02:57