Сделайте скриншот экрана Android и сохраните на SD-карту

1

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

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

Я использую любую помощь

Теги:
screenshot
sd-card

4 ответа

3

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

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

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

  • 0
    Из любопытства, знаете ли вы, есть ли причина, по которой Android не может этого сделать? Это политическое решение разработчиков Android или это ограничение где-то в самом Android?
  • 0
    @MisterSquonk: Это политическое решение не иметь API для этого, AFAIK. Почему у них нет собственного приложения для скриншотов, поставляемого ОС, я не могу сказать.
Показать ещё 2 комментария
1

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

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 script
  monkeyrunner.bat < имя файла >

0

Вы можете посмотреть 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

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

Изменить: Я этого раньше не видел. Ты это пробовал?: 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();
  • 0
    Честно говоря, все, что мне нужно, это эмулятор, так как это для тестирования приложения на ПК. Я уже просматривал эту библиотеку и не мог найти способ превратить ее из фоновой службы в класс. Если я использую его как сервис, он требует, чтобы я запускал его каждый раз после перезагрузки, что для меня не идеально.
  • 0
    Вы хотите сказать, что у вас есть созданное вами представление, и вы хотите сделать снимок экрана этого представления? Это не так сложно.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню