在TextureView中存在一个
private SurfaceTexture mSurface;
成员变量。
可以使用这个SurfaceTexture来构造一个Surface。然后在Surface上可以显示从camera中获取到的流。
A android.view.Surface
created from a SurfaceTexture can be used as an output destination for the android.hardware.camera2
, android.media.MediaCodec
, android.media.MediaPlayer
, and android.renderscript.Allocation
APIs.
TextureView可以用来Captures frames from an image stream as an OpenGL ES texture。The image stream may come from either camera preview or video decode.
关于Surface系统,可以参考这篇文章:
https://blog.csdn.net/innost/article/details/47208337。
这里冒出来一个Surface类。它是什么?在回答此问题之前,先来考虑这样一个问题:
· 前文介绍的View、DecorView等都是UI单元,这些UI单元的绘画工作都在onDraw函数中完成。如果把onDraw想象成画图过程,那么画布是什么?
Android肯定不是“马良”,它也没有那支可以在任何物体上作画的“神笔”,所以我们需要一块实实在在的画布,这块画布就是Surface。SDK文档对Surface类的说明是:Handle on to a raw buffer thatis being managed by the screen compositor。这句话的意思是:
· 有一块Raw buffer,至于是内存还是显存,不必管它。
· Surface操作这块Raw buffer。
· Screen compositor(其实就是SurfaceFlinger)管理这块Raw buffer。
Surface和SF、ViewRoot有什么关系呢?相信,聪明的你此时已经明白些了,这里用图8-5描绘一下心中的想法:
---------------------
作者:阿拉神农
来源:CSDN
原文:https://blog.csdn.net/innost/article/details/47208337
版权声明:本文为博主原创文章,转载请附上博文链接!