3

Galaxy S4 と Kindle HDX 8.9 で「スクリーンショットを撮る」を自動化しようとしています。次のコードを使用しています。

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

私が試したANYPATH値:

  • /data/local/tmp/ (両方のデバイス用) . デバイスのどこにこのフォルダーがあるのか​​ わかりません.jarをこの場所にプッシュしたので、これを試しました。
  • /sdcard/pictures/ (Kindle HDXの場合)
  • /storage/emulated/0 (Galaxy S4 の場合)

私が試したパスに関係なく、条件は常にfalseを返し、スクリーンショットはどのデバイスでも取得されません (実際のデバイスであり、エミュレーターではありません)。ここで何が欠けているのかわかりませんか?

http://developer.android.com/tools/help/uiautomator/UiDevice.html#takeScreenshot(java.io.File)の構文に従っているだけです

よろしく、ルミット

4

3 に答える 3

4

takeScreenshot() メソッドは、Android バージョン 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 shell ls -l /sdcard/ファイル名

于 2013-12-20T07:07:58.747 に答える
1

同じ問題が発生し、代わりに adb screencap 関数を使用するように切り替えました。これは答えではなく、回避策だと思います:

Process process = Runtime.getRuntime().exec("screencap -p " + <filePath>);
process.waitFor();
于 2013-12-07T01:06:30.327 に答える