Описание тега android-mediaprojection
В android.media.projection классы были введены в Android API 21, чтобы позволить приложениям записывать неподвижные изображения, видео и (потенциально) звук из устройства. В предыдущих выпусках приложениям разрешалось захватывать только собственный рендеринг, и для рендеринга на основе представления и OpenGL ES требовались разные подходы.
Поскольку захват содержимого вне текущего приложения имеет последствия для безопасности, приложения, желающие использовать эти функции, должны сначала получить разрешение от пользователя. Это обрабатывается через MediaProjectionManager.
Официальный пример снимка экрана можно найти на github.
Изображения, захваченные MediaProjection, отправляются на виртуальный дисплей, который принимает Surface в качестве аргумента. Surface может быть предоставлен SurfaceView (для немедленного отображения), ImageReader (для доступа из программного обеспечения), созданным из SurfaceTexture (для использования в качестве текстуры OpenGL ES) или MediaCodec / MediaRecorder (для кодирования видео).