Я хотел бы реализовать какой-то инструмент удаленной помощи (например, vnc) для Android. Есть ли возможность программно отображать экран на устройстве?
Программный скрининг на мобильном устройстве
Ответ 1
Что-то вроде этого может сработать для вас:
View v = view.getRootView();
v.setDrawingCacheEnabled(true);
Bitmap b = v.getDrawingCache();
Ответ 2
Это долгое обсуждение этого вопроса на android-developers, но короткий ответ: вы не можете программно сделать снимок экрана с экран Android-устройства в настоящий момент, если
- У вас есть root-доступ на этом телефоне или
- Ваше приложение представляет собой системное приложение
Доступ к Android Manifest READ_FRAME_BUFFER существует (см. api docs здесь), но в настоящее время он может использоваться только системных приложений. Для этого есть разные причины, так как это риск для безопасности. Если фон может в любой момент снять скриншот экрана телефона, люди могут использовать методы распознавания, чтобы обманывать пользовательские пароли, как они были напечатаны, среди другой личной информации.
Итак, нет, приложение VNC невозможно в настоящий момент без root. Чтобы сделать снимок экрана с вашего компьютера (в то время как телефон подключен через usb), вы можете использовать DDMS.
Ответ 3
Вы можете попробовать следующую библиотеку: http://code.google.com/p/android-screenshot-library/ Android Screenshot Library (ASL) позволяет программно снимать скриншоты с устройств Android без необходимости иметь права доступа root. Вместо этого ASL использует собственный сервис, работающий в фоновом режиме, который запускается через Android Debug Bridge (ADB) один раз за загрузку устройства.
Ответ 4
Я думаю, что это возможно в kitkat, используя команду adb для захвата экрана. Вы можете использовать эту команду для записи экрана в качестве видео
adb shell screenrecord /sdcard/demo.mp4
Вы можете найти более подробную информацию здесь
вы можете выполнить команду adb из своего приложения. Проверьте ответ здесь
Ответ 5
поставьте его в onClick..
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);
}
}
Ответ 6
Удаленный tol-тип VNC существует для "НЕКОТОРЫХ" устройств Android (в основном Samsung):
TeamViewer QuickSupport
https://play.google.com/store/apps/details?id=com.teamviewer.quicksupport.market
Дос знает, как этот инструмент получает захват экрана и почему он поддерживает только ограниченный набор устройств?