mattak's blog

人生を1ミリ進める

Androidでのキャプチャ方法まとめ

一緒に仕事をしていて、よく動作中のキャプチャをIRCなどでシェアしたいときがある。 そんなときに利用してい方法をまとめた.

ddmsをつかう

f:id:mattaclj:20140316225124p:plain

ddmsを起動して

  • Device -> Screen Capture / Screen Record

adbをつかう

キャプチャをとる

$ adb shell screencap -p /sdcard/tmp.png

スクリーンキャストをとる

$ adb shell screenrecord /sdcard/tmp.mp4

adb pull してもってくるのも面倒なのでスクリプト書いてつかってる

ashot

android easy screen capture

arec

Android Record Program.

プログラムでキャプチャをとる

adbで利用する

前述のadbコマンドをプログラムないで呼ぶとおこられる。

E/SurfaceFlinger(  179): Permission Denial: can't read framebuffer pid=14876, uid=11059

このpermissionを得るためには、FrameBufferのpermissionが必要.

このpermissionはアプリケーションでは利用できない.

bitmapのDrawingCacheを利用する

現在描画中のViewのgraphicsをとってくることができる。

Bitmap.createBitmap(rootview.getDrawingCache());

Theme.Translucent.NoTitleBarとかしても、Viewの裏の描画情報はとってこれなかった。 あくまで対象のViewの内容しかとれない.

プログラムで好き勝手captureをとれたら、セキュリティ的に問題があるから当然だけど、rootとらずに安全に利用できる方法を何かしら用意してほしいなーと思う。。 そうしたら結構面白いサービスができるのに。