2012-07-19 5 views
3

Я пытаюсь написать приложение, которое выполняет захват экрана на Android 4.0+. Я знаю, что вам, скорее всего, придется иметь корневой телефон, который в порядке.Как вы программно сделаете скриншот на Android ICS и выше?

Я попытался захватить данные из/dev/graphics/fb0. Он работает, но он получает только начальный экран. (HTC One X). Поэтому я предполагаю, что ICS полностью выполняет ускорение, после того как загрузка не будет отображаться в framebuffer.

Хотя в Интернете существует ограниченная информация по этому вопросу, там были некоторые предложения. Один из них - использовать Android-Screenshot-Library. Он не работает (он берет содержимое буфера кадра из/dev/fb0). Другие предложения касаются только захвата экрана вашего собственного приложения. Я хочу захватить экран, что делает пользователь (это для исследований и не имеет злонамеренных намерений.)

До сих пор я застрял, поэтому любые идеи или предложения приветствуются.

+0

Вы пытаетесь сделать снимок экрана своего приложения? –

+0

Нашел аналогичный вопрос здесь. Проверьте, подходит ли оно для вас http://stackoverflow.com/questions/3582603/programmatic-screencapture-on-mobile-device –

+0

@ rrostt У вас есть какой-то успех? –

ответ

1

Для прямого доступа к фреймбуферу требуются знания, специфичные для устройства, и часто изменяющиеся режимы графического движка, поэтому не рекомендуется.

Лучшим ответом является изучение того, что делает adbd для вашей конкретной версии. См

Android/платформа/система/ядро ​​/ ADB/framebuffer_service.c

в AOSP в теге, сравнимой с установленной версией Android (хотя технически, накопление продавец может иметь adbd impelement возможность скриншота по-разному).

С момента своего создания он запускает автономный исполняемый файл, называемый «screencap», который выгружает данные в стандартный вывод.

Вы, вероятно, нужно запустить что, как пользователь, который находится в графической группы, то есть, либо корень или оболочек идентификатора пользователя АБД.

Смежные вопросы