Программный снимок экрана на мобильном устройстве - PullRequest
13 голосов
/ 27 августа 2010

Я хотел бы реализовать какой-нибудь инструмент удаленной помощи (например, vnc) для Android. Есть ли возможность программно сделать снимок экрана на устройстве?

Ответы [ 6 ]

17 голосов
/ 27 августа 2010

Нечто подобное может работать для вас:

View v = view.getRootView();
v.setDrawingCacheEnabled(true);
Bitmap b = v.getDrawingCache();
12 голосов
/ 27 августа 2010

Существует долгое обсуждение этого вопроса на android-developers , но краткий ответ таков: Вы не можете программно сделать снимок экрана экрана устройства Android на данный момент, если только

  1. У вас есть root-доступ на этом телефоне, или
  2. Ваше приложение является системным приложением

Разрешение для манифеста Android READ_FRAME_BUFFER существует (см. Api docs здесь ), но в настоящее время может использоваться только системными приложениями. Для этого есть различные причины, одна из которых заключается в том, что это угроза безопасности. Если фон может сделать снимок экрана телефона в любое время, то люди могут использовать методы распознавания текста, чтобы прослушивать пароли пользователей по мере их ввода, наряду с другой личной информацией.

Так что нет, приложение VNC на данный момент невозможно без рута. Чтобы сделать скриншот с вашего компьютера (когда телефон подключен через USB), вы можете использовать DDMS .

7 голосов
/ 07 сентября 2010

Вы можете попробовать следующую библиотеку: http://code.google.com/p/android-screenshot-library/ Библиотека скриншотов Android (ASL) позволяет программно захватывать скриншоты с устройств Android без необходимости иметь права root-доступа.Вместо этого ASL использует собственную службу, работающую в фоновом режиме, запускаемую через Android Debug Bridge (ADB) один раз за загрузку устройства.

3 голосов
/ 14 января 2014

Я думаю, что это возможно в kitkat, используя команду adb для захвата экрана.Вы можете использовать эту команду, чтобы записать экран как видео. Проверьте ответ здесь

1 голос
/ 18 июня 2014

положить его на клик ..

Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);

и пиши funtcion ..

public Bitmap takeScreenshot() {
   View rootView = findViewById(android.R.id.content).getRootView();
   rootView.setDrawingCacheEnabled(true);
   return rootView.getDrawingCache();
}

public void saveBitmap(Bitmap bitmap) {
    File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(imagePath);
        bitmap.compress(CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();
    } catch (FileNotFoundException e) {
        Log.e("GREC", e.getMessage(), e);
    } catch (IOException e) {
        Log.e("GREC", e.getMessage(), e);
    }
}
0 голосов
/ 28 февраля 2014

Удаленный телефон VNC-типа действительно существует для "НЕКОТОРЫХ" устройств Android (в основном Samsung):
TeamViewer QuickSupport
https://play.google.com/store/apps/details?id=com.teamviewer.quicksupport.market
Dos кто-нибудь знает, как этоинструмент получает снимки экрана, и почему он поддерживает только ограниченный набор устройств?

...