2013-12-02 4 views
2

Я пытаюсь автоматизировать «снимок экрана» на Galaxy S4 и Kindle HDX 8.9, и я использую следующий код.takeScreenshot всегда возвращает false для uiautomator

if(!(getUiDevice().takeScreenshot(new File("ANYPATH")))) 
     System.out.println("False: Screenshot not taken!!"); 
    else 
     System.out.println("Gangnam Style..."); 

ANYPATH значения Я попытался:

  • /данные/местные/TMP/ (для обоих устройств). Не знаю, где я могу найти эту папку на устройстве, я попробовал это, потому что я подтолкнул свои банки в это место.
  • /SDCard/фотографии/ (для Kindle HDX)
  • /хранение/эмулировать/0 (для Galaxy S4)

Независимо от пути я стараюсь, условие всегда возвращает ложные и скриншот не берется ни на одном из устройств (фактических устройствах, а не на эмуляторе). Я не уверен, что мне здесь не хватает?

Я просто следую синтаксис из http://developer.android.com/tools/help/uiautomator/UiDevice.html#takeScreenshot(java.io.File)

С уважением, Rumit

ответ

2

Метод takeScreenshot() применяется от 4,2 и выше андроида версии устройств.

Если версия устройства подходит, используйте следующий фрагмент кода.

File path = new File("/sdcard/filename.png"); 
int SDK_VERSION = android.os.Build.VERSION.SDK_INT; 
if (SDK_VERSION >= 17) { 
    mUiAutomatorTestCase.getUiDevice().takeScreenshot(PATH); 
} 

Мы можем просмотреть файл по следующей команде.

$ ADB Ls оболочки -l/SDCard/имя-файла

1

Я была такая же проблема и перешли на использование ADB функции ScreenCap вместо этого. Я предполагаю, что это не ответ, но обходной путь:

Process process = Runtime.getRuntime().exec("screencap -p " + <filePath>); 
process.waitFor(); 
0

У меня была эта проблема тоже. И с помощью инструментов отладки я обнаружил, что это проблема разрешения. Я решил это, добавив разрешение на запись в мой манифест. Если вы используете устройство 6.0+, вам также необходимо вручную разрешить разрешение на тестовое приложение во время выполнения.

Смежные вопросы