Учет конкретных устройств на Android

Нам нужно найти способ захвата экрана Android, без использования какого-либо внешнего программного обеспечения, которое будет работать на некорневом телефоне.

Мои исследования показывают, что нет никакого способа сделать это. В любом случае у вас должны быть права root, чтобы можно было захватить экран устройства.

Однако дальнейшие исследования показывают, что для ограниченного числа устройств существует способ сделать это без привилегий root. В качестве доказательства я могу привести следующее приложение на Android-рынке: Скриншот UX.

Он утверждает, что приложение не нуждается в корневых разрешениях для захвата экрана на следующих устройствах:

* Серия Галактики (S, S2, ...)
* Телефоны HTC (Sensation, ...)
* Motorola (Atrix, ...).
* Серия LG Optimus (G2X, ...)

Некоторые говорят, что устройства Tegra также поддерживают это.

Может ли кто-нибудь указать какую-либо документацию, по крайней мере, на определенные устройства, чтобы мы могли, по крайней мере, поддерживать телефоны HTC, например.

EDIT: Пока мы пытаемся использовать «/ system/bin/screencap», но без успеха на эмуляторе.
Имеет ли возможность делать скриншоты на некоторых определенных устройствах, просто означает, что они позволяют использовать «/ system/bin/screencap» или читать напрямую с/dev/graphics/fb0?

Или они дают некоторый API для снятия скриншотов?

Благодарю.

Захват экрана - это старая и обсуждаемая тема на Android.
За последние годы разработано несколько основных вариантов:

1. Запуск screencap на корневых устройствах, но вы уже это знаете.
2. Запуск screencap и siginging вашего приложения с системным сертификатом:

Существует разрешение READ\_FRAME\_BUFFER, но вы можете получить его только тогда, когда ваши приложения подписаны как системное приложение.

3. Использование всех видов трюков ADB, но большинство из них использует screencap, и AFAIK требует, чтобы устройство подключалось к ПК.

[But Since Android 5 things have changed.](https://developer.android.com/about/versions/android-5.0.html) 

>  Android 5.0 позволяет добавлять захват экрана и совместное использование экрана
>   возможности вашего приложения с новыми API-интерфейсами android.media.projection.
>   Эта функциональность полезна, например, если вы хотите включить
>   экрана в приложении для видеоконференций. 
> 
> 
>   
>    Новый метод createVirtualDisplay() позволяет вашему приложению захватывать
>   содержимое основного экрана (дисплей по умолчанию) в Surface
>   объект, который ваше приложение может затем отправить по сети. Только API
>   позволяет захватывать небезопасное содержимое экрана, а не системный звук. к
>   начните загрузку экрана, ваше приложение должно сначала запросить
>   разрешение путем запуска диалогового окна захвата экрана с использованием намерения
>   полученных с помощью метода createScreenCaptureIntent (). 
> 
> 

Устройства, о которых вы упомянули, довольно стары, и я сомневаюсь, что они получили официальное обновление для Android 5, это оставляет вам второй вариант.