MediaProjection - это класс Android, который облегчает захват экрана и запись звука системы.

Классы android.media.projection были введены в Android API 21, чтобы позволить приложениям записывать неподвижные изображения, видео и (потенциально) аудио с устройства. В предыдущих выпусках приложениям было позволено захватывать только их собственный рендеринг, и для рендеринга пользовательского интерфейса на основе View и OpenGL ES требовались разные подходы.

Поскольку захват контента вне текущего приложения имеет последствия для безопасности, приложения, желающие использовать эти функции, должны сначала получить разрешение от пользователя. Это обрабатывается с помощью MediaProjectionManager .

Официальный пример захвата экрана можно найти на github .

Изображения, снятые MediaProjection, отправляются на виртуальный дисплей , который принимает Surface в качестве аргумента. Поверхность может быть предоставлена ​​с помощью SurfaceView (для немедленного отображения), ImageReader (для доступа из программного обеспечения), построенного из SurfaceTexture (для использования в качестве Текстура OpenGL ES), или MediaCodec / MediaRecorder (для кодирования видео).