Я создаю приложение, которое должно реализовать экранирование ~ зеркалирования ~ для любого без корневого устройства с Android 4 и выше, 2 кадра/сек будет достаточно для начала.Android, Захват экрана
Я пытаюсь использовать ADB «видеобуфер:» команду, чтобы захватить экран устройства снимки
Протокола USB связи АБР сообщение ориентированного (не потоковые), таким образом, чтобы получить порцию данных набора для чтения (A_WRTE @ 4096bytes)/подтверждение (A_OKEY @ 24bytes) пары команд принимаются/отправляются.
Пока принимающая сторона не отправила A_OKEY, никакие дополнительные данные не будут выталкиваться устройством (следовательно, это не протокол потоковой передачи).
В целях оптимизации производительности я реализовал протокол USB АБР напрямую, а не с помощью ADB.exe
Изображение 5 устройства Samsung Galaxy имеет разрешение 1920 * 1080 и 32 битовой глубиной, и таким образом, изображение рамочной камеры RAW будет весить 1920 * 1080 * 4 = 8294400 байт (для iPAD оно будет даже больше), используя команду «framebuffer:» по протоколу, ориентированному на сообщение ADB, для получения одного снимка экрана требуется ~ 2 секунды (grrr ..).
Если бы потоковый протокол он должен был ~ 150 мс на USB 2.0 @ 480Mbps
- Имея выше в виду, есть ли способ, чтобы получить «видеобуфер:» S быстрее?
- Есть ли способ уменьшить разрешение перед отправкой через USB?
- Есть ли какой-либо другой подход, общий для всех устройств, сделать скриншоты 24x7 быстрее?
- Эквивалент AirPlay для Android (ОБЩИЕ для всех устройств) был бы оптимальным?
P.S.
Я уже пробовал проект ASL, он не работает на моем «Samsung Galaxy 5», так как оболочка ADB.exe не работает с системными привилегиями (скорее, она работает под учетной записью «shell»).
adbd работает как «оболочка» на всех распакованных сайтах Android. Но оболочка должна уметь снимать скриншоты - вот как кнопка в DDMS может работать на производственных устройствах. –
Я получаю «Permission denied» для open («/ dev/graphics/fb0», O_RDONLY) под учетной записью оболочки ... – NadavRub
Это не так, как вы должны были запечатлеть экран в течение многих лет - даже если вы может открыть его, он не будет работать на большинстве устройств с графическим процессором. –