アンドロイド関係の記事やブログを書くときに必要になるのが画面キャプチャー(アンドロイドでの呼び方はScreenshot)だ。かつては、SDKを入れないと画面キャプチャーはできなかったのだが、ICS(Ice Cream Sandwitch。android 4.0)以降は、ハードウェアボタンの組み合わせで画面キャプチャーが行えるようになった。ICS以前のアンドロイド機では、メーカーによってはスクリーンキャプチャ機能が使える場合がある。たとえば、ソニー系だとandroid 2.3系でも電源/ロックキーの長押しで表示される電源オフメニューに画面キャプチャの項目がある。メーカーがサポートしていない場合には、root権限を取得してキャプチャアプリを動作させないと実機上でのスクリーンキャプチャが行えない。

ICS以降の画面キャプチャ機能は、原則ハードウェアボタンを利用する。Nexus系では、電源/ロックキーとボリュームダウンキーを同時押しする。ただし、メーカーや機種によって違う場合がある。最終的には取説で確認するしかない。

つまり、画面キャプチャーには、大きく2つの方法があって、SDKをPCにインストールしてUSB接続で行う方法と、実機で行う方法の2つだ。

本体でキャプチャする方法

アンドロイド機が画面キャプチャー機能を持っている場合には、原則ハードウェアキーの組み合わせで画面キャプチャーが行える。Nexus系のデバイスは、電源/スリープキーとボリュームキーの下を同時に押すことでキャプチャーが行われる。これに倣う機種も多いが、ハードウェアキーをセンスする部分の造りで必ずしも同時押しを検出できないこともあり、他のキーの組み合わせになることもある。Nexusシリーズの同時押しもタイミングが微妙なところがあり、何回か練習して慣れる必要がある。

この方法は手軽なのだが、撮影できない、しにくい場面もある。たとえば、アイコンをドラッグしている最中の画面などだ。両手を使い、片手でアイコンをアイコンを移動させつつ、もう一方の手で電源/ロックキーとボリュームキーを同時押しするのはかなり曲芸的である。誰かに操作してもらうという方法はあるが。

キャプチャーされた画面は、原則、SDカードフォルダ(/sdcard)の下のPicture/Screenshotsに保存される。ファイルを転送する場合、USBを使うと、/sdcardフォルダが直接見えるような状態になるので、Picture/Screenshotsをアクセスすればよい。なお、このフォルダはギャラリーアプリでも表示が可能である。

数枚程度の転送で相手がBluetoothを使えるならオブジェクトプッシュ(OPP)で転送するのが簡単だ。Bluetoothが動作しているiOS以外のデバイスは原則OPPを持っている。画像を選択してギャラリーから共有メニューを使い共有先にBluetoothを指定すれば、転送先をスキャンしてリストに表示する。ここから転送先を指定すればOKだ。してデバイスを指定するだけだ。ギャラリーはファイルを長押しして選択状態にしたあとは、他の画像をタップすれば、複数選択が可能だ。

Sony系のアンドロイドデバイスでは、電源/ロックキーの長押しで表示されるメニューにスクリーンショットの項目がある

SDKを使う方法

無料で配布されているアンドロイドのSDKには、画面をキャプチャする機能が含まれている。これは、ツールのうちadb(android Debug Bridge)およびandroid Debug Monitor(ADM)を利用する。SDKのインストールという手間はあるものの、一度インストールしてしまえば、あとはSDKに含まれるSDK Managerで更新が可能なので、維持はそれほど面倒ではない。

SDKを使った撮影の前にアンドロイド機をUSBデバッグできるように設定しておく。「設定」→「開発者向けオプション」を使い、「USB デバッグ」をオンにする。「開発者向けオプション」が「設定」にない場合、「設定」→「タブレット情報」や「端末情報」にある「ビルド番号」を7回連続してタップすると表示されるようになる。

また、「スリープモードにしない」を選択しておき、充電状態(USB接続中は常に充電状態となる)ではスリープモードに入らないようにしておくといいだろう。というのは画面キャプチャを連続して行うような場合、スリープモードに入ってしまうと真っ黒の画面しかキャプチャーできなくなるからだ。

次にSDKをインストールしたPCと接続すると、アンドロイド側にPCを確認するダイアログが表示される。このとき、チェックボックスをオンにして「はい」を選択すると、次回から確認が行われないようになる。

SDKで画面キャプチャを行う場合、「設定」→「開発者オプション」にある「USBデバッグ」をオンにする。また、何枚もキャプチャするような場合、スリープしないように「スリープモードにしない」をオンにしておくといい

USBデバッグをオンにして、はじめてPCに接続すると、PC認証のダイアログが表示されるので、チェックボックスをオンにしてOKボタンを押す

次にPC側でアンドロイドSDKをインストールしたフォルダにあるtoolsのmonitor.batでADMを起動可能だ。これを起動すると、デバッグ接続中のデバイスがDeviceタブのリストに表示されるので、これを選択したあと、Deviceタブツールバーのカメラアイコンをクリックするとウィンドウが表示される。このウィンドウに表示される画像は、接続しているデバイスと同じ解像度になるためPCのモニターによっては画面からはみ出してしまうものの、Saveボタンで出力されるイメージは完全なものになる。

ここでRefreshとSaveボタンを使えば、画面が取り込まれ、これをpng形式で保存可能だ。ファイル名には、現在日時が入るようになっているため、そのままセーブしても上書きされることはない(過去のバージョンではファイル名を毎回指定する必要があった)。なお、Copyボタンでクリップボードにイメージがコピーされるので、これを他のアプリに直接貼り付けてもいい。

このSDKを使う方法の最大のメリットは、アンドロイド側の操作状態がどうであっても、ボタンを押すだけでキャプチャが可能な点だ。このため、画面をドラッグしてスクロールしている途中や、アイコンをドラッグしてオブジェクトに重ねた状態などでもキャプチャが比較的簡単に行える。

Android Debug Monitorは、左の「Device」タブにUSB接続しているデバイスのリストが表示され、これを選択して、タブ内のカメラアイコンをクリックすれば、デバイススクリーンキャプチャウィンドウが開く

Android Debug Monitorのデバイススクリーンキャプチャ機能。実機と同解像度のウィンドウが開くが、Saveボタンを使えば、イメージを正しく保存できる

なお、SDKとJavaがインストールされていてadbが起動しているなら、Android Screen Monitor(ASM)というJavaアプリを使っても画面キャプチャーを撮ることができる。このアプリを使うと、画面が切り替わると自動で表示も切り替わるため、ADMのようにRefreshボタンを押す必要がない。また、このアプリ自身にもイメージを保存する機能はあるが、PC側の画面キャプチャツールで取り込むことも可能だ。

特に最近の高解像度のアンドロイド機では、そのままの解像度だと画像ファイルが大きすぎることがあり、このASMで縮小表示したものをキャプチャすれば、あとから画面サイズを手直しする必要がなく便利だ。なお、大半のPC用画面キャプチャーアプリは、画面からはみ出した部分をキャプチャーできないので注意されたい。

Android Screen Monitorは縮小表示が可能で、これをPC用キャプチャツールで取り込めば、縮小する手間のいらないキャプチャ画像になる

■ Android Screen Monitor
http://www.adakoda.com/adakoda/android/asm/

画面キャプチャのTips

本体で行う画面キャプチャーもSDKを使うものも、キャプチャーできるのはアンドロイドがきちんと起動した間だけ。たとえば、ブートローダーの動作中は画面キャプチャは行えない。どうしても撮影したい場合には、液晶を直接デジタルカメラで撮影するしかない。このような場合には、周囲を暗くして画面だけが見える状態にする。というのは、液晶表面のガラスに映り込みがあるからだ。あとは、カメラと液晶面を並行に保つこと。コンパクトデジカメなら、手持ち撮影でもなんとかなるが、デジタル一眼クラスだと三脚を使うか、机に取り付けられるアームなどを使い固定するほうが安定する。また、カメラ用品として入手できる水平儀(透明なプラスティックの中に緑色の水と泡の入っているもの)を使い、カメラを水平に設定する。自動露出で撮影するとシャッタースピードが遅くなり、手ぶれで画像がぼけるので、マニュアルかシャッタースピード優先で撮影を行う。ISO値を高めにして撮影するが、露出計の表示で多少露光不足でも、ある程度は映るのであとからレタッチソフトの「レベル」で調整する方法もある。

本体キャプチャーの場合には、撮影後に通知領域にキャプチャを保存しているという通知が表示され、SDKを使う場合には、USBデバッグのアイコンが通知領域に表示されてしまう。画面キャプチャーの通知は、クリア可能だが、キャプチャごとにクリアせねばならずキャプチャー操作が面倒になる。また、USBデバッグのアイコンは、USBケーブルが接続されている間は消すことができない。

気にしないというのであればいいが、どうしても気になる場合には、レタッチソフトを使い、アイコンの右側の何もない領域をコピーしてアイコンの上に重ねておけば、消すことができる。同じアンドロイド機で何枚もキャプチャーを撮るのであれば、何もない領域をコピーしたら、クリップボードから新規に画像を生成してPNG形式で保存しておくと、毎回コピーしなくて済む。次回からは、これを開いて、画像全体をクリップボードにコピーし、キャプチャ画像に貼り付けてアイコンの上に重ねて置けばよい。

通知領域のアイコンを消すには、レタッチソフトでアイコンの隣の黒い部分を選択して貼り付け、アイコンの上へ移動させる

なお、詳しい使い方の説明は省くが、Image Magickというレタッチソフトは、コマンドのオプションで画像の重ね合わせが可能なので、自分でバッチファイルを作ることができるひとは、処理を自動化できる。

■ コマンド例

composite.exe -gravity NorthWest cover.png TARGETFILE SAVEFILE

cover.png   カバー用画像ファイル名(あらかじめ作っておく)
TARGETFILE  画面キャプチャー画像ファイル名
SAVEFILE    カバーと重ね合わせたキャプチャー画像の保存ファイル名

※composite.exeはImage Magickに含まれているコマンド。「-gravity NorthWest」は左上(北西)に位置合わせして重ね合わせを行うことを示すオプション
■ Image Magick
http://www.imagemagick.org/script/index.php

また、Nexusシリーズでは、画面キャプチャ画像と本体写真を合成して画像を作ってくれるサービスdevice-Art-Generatorをグーグルが運営している。これを使うとたとえば、Nexus 7の正面からの画像に指定した画面キャプチャーをはめ込んだ画像を簡単に作ることができる。記事のタイトル部分などに使うと印象が違って来る。なお、解像度さえ同じならはめ込む画像は、必ずしも画面キャプチャーでなくてもよい。

Device Art Generatorのページ上にあるデバイスのところにキャプチャしたPNG画像をドラッグ&ドロップで落とすと、外側にハードウェア写真を付けた画像を生成して下に表示するので、これをブラウザの機能でダウンロードすればよい

Device Art Generatorにより、生成された画像

■ Device Art Generator
http://developer.android.com/intl/ja/distribute/promote/device-art.html
本稿は、2013年10月15日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。