Yes, assuming you're running as shell
or root
, and you don't mind using non-public native APIs (i.e. you don't care if your app breaks every time a new version of the OS rolls out).
The canonical example is screenrecord, introduced in Android 4.4. It creates a virtual display and directs the output to a Surface
. For normal operation a MediaCodec
input surface receives the output. For the "bugreport" mode introduced in screenrecord v1.1, the output goes to a GLConsumer
(roughly equivalent to a SurfaceTexture), which is rendered to a Surface
with overlaid text.