Можно ли использовать MediaProjection API и обрабатывать каждый записанный кадр во время записи?

#java #android #screenshot #screen-recording #android-mediaprojection

#java #Android #скриншот #запись экрана #android-mediaprojection

Вопрос:

Я хочу создать приложение, которое имитирует ambilight, которое вы знаете по телевизору Philips. Для этого у меня есть Arduino, который управляет моими светодиодами и прослушивает команды на последовательном порту для установки цвета светодиодов.

Теоретически я хочу, чтобы мое приложение записывало экран моего Android TV в фоновом режиме. Этого можно достичь с помощью MediaProjection API. Но, насколько я знаю, вы можете получить видеофайл только после остановки записи. Но я хочу обрабатывать каждый кадр или делать снимок экрана каждые n миллисекунд.

Мой вопрос: можете ли вы получить доступ к одному кадру во время записи или можно делать снимок экрана каждые n секунд в фоновом режиме с помощью MediaProjection API. Или есть другой способ добиться этого?

Ответ №1:

После дальнейшего исследования я нашел решение. Вы можете использовать a ImageReader для MediaProjection и реализовать его OnImageAvailable обратный вызов. Этот обратный вызов вызывается каждый раз, когда выполняется VSync. Затем вы можете извлечь растровое изображение из считывателя.