Снимок экрана текущего экрана - PullRequest
6 голосов
/ 26 декабря 2011

Я работаю над приложением на Android, которое поделится экраном с другим устройством Android. Это приложение будет работать в фоновом режиме как служба.

Я хочу сделать снимок экрана (текущий экран), сохранить его в формате JPEG и непрерывно отправлять его по UDP на другое устройство Android.

Но моя проблема в том, как захватить текущий экран с помощью захвата кадрового буфера.

Пожалуйста, помогите.

Ответы [ 2 ]

7 голосов
/ 27 декабря 2011

Доступ к кадровому буферу Android (и в других системах Linux) можно получить, открыв устройство / dev / graphics / fb0.Это требует root-доступа, и даже с root-доступом он не будет работать должным образом на всех устройствах.Большинство устройств используют пару кадровых буферов и переключаются между ними.Более серьезная проблема заключается в том, что даже в случае рутированного телефона идентификатор пользователя машины Dalvik не имеет права доступа к устройству с буфером кадров (fb0).Это означает, что вы никогда не сможете открывать и читать с устройства fb0 непосредственно из кода Java.Вам нужно будет запустить собственное приложение linux от имени root, и оно сможет получить доступ к fb0 (после того, как пользователь даст разрешение).Я преуспел в том, чтобы сделать эту работу, и она довольно сложна и также не одобряется Google.Я все еще могу потенциально превратить это в коммерческое приложение, но ограничения и несовместимость делают вероятность довольно низкой.

3 голосов
/ 26 декабря 2011

Вы можете сделать скриншот макета, включив

setDrawingCacheEnabled(true);

вида.

Проверить ссылку

...