Androidでのキャプチャ方法まとめ
一緒に仕事をしていて、よく動作中のキャプチャをIRCなどでシェアしたいときがある。 そんなときに利用してい方法をまとめた.
ddmsをつかう
ddmsを起動して
- Device -> Screen Capture / Screen Record
adbをつかう
キャプチャをとる
$ adb shell screencap -p /sdcard/tmp.png
スクリーンキャストをとる
$ adb shell screenrecord /sdcard/tmp.mp4
adb pull してもってくるのも面倒なのでスクリプト書いてつかってる
ashot
arec
プログラムでキャプチャをとる
adbで利用する
前述のadbコマンドをプログラムないで呼ぶとおこられる。
E/SurfaceFlinger( 179): Permission Denial: can't read framebuffer pid=14876, uid=11059
このpermissionを得るためには、FrameBufferのpermissionが必要.
http://developer.android.com/reference/android/Manifest.permission.html#READ_FRAME_BUFFER
-
Firstly, you're right that a normal application can't make use of the READ_FRAMEBUFFER permission, because it's "signature"-level. That means you must be signed by the same key as the Android system ROM in order to be able to take such a screenshot.
このpermissionはアプリケーションでは利用できない.
bitmapのDrawingCacheを利用する
現在描画中のViewのgraphicsをとってくることができる。
Bitmap.createBitmap(rootview.getDrawingCache());
Theme.Translucent.NoTitleBarとかしても、Viewの裏の描画情報はとってこれなかった。 あくまで対象のViewの内容しかとれない.
プログラムで好き勝手captureをとれたら、セキュリティ的に問題があるから当然だけど、rootとらずに安全に利用できる方法を何かしら用意してほしいなーと思う。。 そうしたら結構面白いサービスができるのに。