#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. Затем вы можете извлечь растровое изображение из считывателя.