是否可以拍摄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/