2017-01-08 18 views
5

AndroidのもののADBを使ってスクリーンショットを撮るにはどうすればよいですか?私が試してみました:Androidのもの:スクリーンショットを撮る

adb shell screencap -p /sdcard/screen.png 
adb pull /sdcard/screen.png 
adb shell rm /sdcard/screen.png 

adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png 
+0

Androidスタジオ内で試してみましたか? – riggaroo

+0

アイデアありがとうございます - 残念ながら、「デバイスからのスクリーンショットを取得中に予期しないエラーが発生しました:EOF」 –

+0

これはあなたの他の質問に関連していますか?つまり、あなたの非作業画面を差し込んでいるかどうかですか? hdmiの画面を接続しましたか? – Blundell

答えて

2

は私がアンドロイド物事開発者プレビューscreepcap作品を作ることができませんでした。このコマンドの結果、サイズが0のファイルが作成されます。

私は次の2つのオプションをお勧めします:フレームバッファを使用するかビデオを録画するか(screenrecord)、後で適切なツールで画像に変換してください。

  • ホストマシンにフレームバッファを引い:手順は次のようになりますので、私は、最初のオプションを検討します。あなたはパーミッションチェックに合格するためには、rootとしてadbdを開始する必要があることに注意してください:

    adb root 
    adb pull /dev/graphics/fb0 screenshot 
    
  • あなたがを好むツールで画像に生のバイナリに変換します。私はを使用しています。画面の解像度やピクセル形式が異なるため、以下のコマンドが機能しない場合があります。その場合は、適切な変更を加えてください。

    ffmpeg -f rawvideo -pix_fmt rgb565 -s 800x480 -i screenshot screenshot.png 
    
+0

'adb shell dumpsysウィンドウ| grep mUnres'を実行して画面の解像度を確認します。 – Onik

+0

@Andriy Omelchenko最初は何が間違っていましたか?間違った画面解像度ですか? 'pix_fmt'の価値はあなたのために働いたのですか? – Onik

+1

はい、間違った画面解像度と '-pix_fmt rgb565'も私のために変更なしで動作します。そしてあなたはクールです)気高い! –

1

はADB経由でスクリーンショットを取得する可能性がないのでTatsuhiko Araihereによって記述Androidの物事の古い限られたOpenGLのバージョン、の、ようだが、あなたは、Android Studioから例えばビデオを(記録し、またはADB commandsを経由することができます)とffmpegを介して、例えば、そこからグラブフレームより:

ffmpeg -i device-2017-01-23-193539.mp4 -r 1 screen-%04d.png 

device-2017-01-23-193539.mp4 - アンドロイドスタジオ)ファイルを介して、記録の名前(。

+0

OpenGLをAndroidのものに入れなかったことに気付きました。かなり残念です。 –

+0

@Quintin Balsdon _「OpenGLをAndroidのものに入れなかったことに気付きました。つまり、 'OpenGL ES-CM 1.0'は、' adb shell dumpsys |グレープGLES'。 – Onik

+1

私はそれが_ "古いOpenGLバージョン" _のためだとも疑っています。私は 'OpenGL ES-CM 1.1'を私の' Android 4.2'の電話機に持っていて、 'screencap'は期待通りに動作します。 – Onik

関連する問題