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