Сделайте скриншот экрана Android и сохраните на SD-карту - PullRequest
1 голос
/ 08 мая 2011

Здесь, на SO, есть несколько вопросов о захвате скриншотов приложения для Android.Тем не менее, я не нашел надежного решения о том, как сделать снимок экрана программно с помощью Android SDK или любого другого метода.

Поэтому я подумал, что снова задам этот вопрос в надежде найти хорошийРешение, надеюсь, такое, которое позволит снимать полноразмерные изображения, которые я могу сохранить на SD-карту или где-то подобное.

Я ценю любую помощь

Ответы [ 4 ]

3 голосов
/ 08 мая 2011

Это невозможно напрямую на устройстве / эмуляторе, если только он не имеет рута.

Честно говоря, все, что мне нужно, это эмулятор, так как это для тестирования приложения на ПК

Это звучит как работа для monkeyrunner .

1 голос
/ 02 августа 2011
Инструмент

monkeyrunner может выполнить эту работу за вас с помощью команды adb, [скрипт python]

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
//waits for connection
device = MonkeyRunner.waitForConnection()
//take the current snapshot
device.takeSnapshot()
//stores the current snapshot in current dir in pc
device.writeToFile('current.png')\
//copy it to the sd card of device
os.subprocess.call('adb push current.png /sdcard/android/com.test.myapp/current.png')

Примечание: вызовите этот файл сценария jython
monkeyrunner.bat

0 голосов
/ 09 мая 2011

Вы можете посмотреть на http://codaset.com/jens-riboe/droidatscreen/wiki (с записью на http://blog.ribomation.com/2010/01/droidscreen/):, это библиотека Java, которая использует adb для захвата снимков экрана. Я смог (с много консистентной смазки) измените источник, чтобы я мог автоматически захватывать временные серии снимков экрана (которые я использую для демонстрационных видео).

Вы можете увидеть структуру класса в http://pastebin.com/hX5rQsSR

РЕДАКТИРОВАТЬ: Вы бы вызвали его (после объединения всех требований), как это:

java -cp DroidScreen.jar --adb "" --device "" --prefix "" --interval

0 голосов
/ 08 мая 2011

Скорее всего, вам не понравится этот ответ, но я видел только те, которые связаны с использованием нативного кода или выполнением нативных команд.

Edit: Я не видел этого раньше. Ты это пробовал?: http://code.google.com/p/android-screenshot-library/

Edit2: проверил эту библиотеку, и это тоже плохое решение. Требует запуска службы с ПК. Так что мой первоначальный ответ все еще остается в силе:)

Edit3: вы должны быть в состоянии сохранить вид как изображение, выполнив что-то похожее на это. Возможно, вам придется немного изменить его, чтобы получить ширину / высоту вида. (Я раздуваю макеты и указываю ширину / высоту при компоновке кода)

View content = getView();
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
File file = new File(pathAndFilename);              
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.close();
...