NIFの楽園

主にAndroidスマートフォンやアプリに関する紹介

【自動実行アプリ「Tasker」の使い方】【作成例6】ハードキーをタップして、スクリーンショットを撮る方法について

2017/06/10

 通常、Androidスマートフォンでは、電源ボタンとボリュームボタン(down)を同時に押下することでスクリーンショットを撮ることができます。でも、トライしてみればわかると思いますが、端末によってはなかなか難しいものがあります。
 また、最近のスマートフォン(OS 6.0以降)は、ホームボタンを長押しすれば、スクリーンショットは簡単に撮れるようになっています。
  
 上記の方法によりスクリーンショットは撮ることができますが、Taskerを利用して、端末のハードキーを押下することで、スクリーンショットが撮れないかということにチャレンジすることにします。

 ・スポンサーリンク


※長いのでIndexを付けます。
・Task:Plugin(Touch Task):スクリーンショット
・Profile:Plugin(Touch Task):ハードキーイベント
・Action:List Files
・Element:Menu
・Element:Image

※「Tasker」アプリバージョン:4.9u4m
※使用したAndroid端末:「ASUS ZenFone 2」(OS:6.0)
 
1.ハードボタン(キー)を押下するイベントについて

 早速、TaskerのProfileタブ画面から「Event Context」の一覧にある「Hardwear」カテゴリーを見ると、ボタン(キー)に関するイベントには「Button:Camera」と「Button:Long Search」の2つがあります。
 端末によっては、ハードの「カメラ」ボタンや「検索」ボタン(現在はほどんど皆無)は付いていません。
 (今回、使用する「ASUS Zenfone 2」にもそのどちらのボタンもありませんが、端末の設定で、タスクボタン(キー)を長押しすればスクリーンショットを撮れるようにすることはできます。)
  
 ここで、あきらめるわけにはいかないので、ハードキーがイベントになるPluginを探したところ「Touch Task」(無料)というアプリを見つけることができました。
 
2.スクリーンショットが撮れるアプリについて

 次に、Taskerで利用できる「スクリーンショット」アプリ(すなわちPluginを提供している)を探す必要があります。
 Tasker Wiki Pluginの一覧をみると唯一「Screenshot Easy」というアプリがあり、しかも無料で提供されています。
 ※いろいろな条件で、「Taskerとの連動を試しましたが、非rootデバイスでは、残念ながら動作しませんでした。

 同じ一覧に先ほど紹介した「Touch Task」の記載もあり、スクリーンショットのことは特に触れられていませんでしたが、Google Storeでの説明によれば非rootデバイスでのスクリーンショットが可能とあったので、こちらで試してみることにしました。

3.「Touch Task」(Ver.1.6.3)について

・起動画面

「Google Store」のインストール先です。

起動画面は、アプリ設定の画面になっています。


 
「Touch Task」の各イベントおよび各アクションは、次のようになっています。

 今回利用するのは、「Keys」イベントと「Screen capture」アクションです。
※他にもいろいろなイベントとアクションがあります。機会があればまた紹介したいと思います。

 
・スポンサーリンク


4.スクリーンショットを撮る「Task」の作成

 材料が揃ったので、Taskerを利用して想定通りのことができるのか、まずは、スクリーンショットを撮るタスク(アクション)を作成します。

①TASKSタブ画面で、「+」ボタンをタップ
②タスク名(screenshot)を入力して、③「レ」をタップ

⇒「Task Edit(screenshot)」画面へ

④「Task Edit(screenshot)」画面で、「+」ボタンをタップ

⑤「Action Category」選択画面で、「Plugin」をタップ
⑥「Action Plugin」選択画面で、「TouchTask」をタップ
⑦プルダウンメニューから「Screen capture」をタップ

⇒「Action Edit(Screen capture)」画面へ

⑧鉛筆マークをタップ

⇒「Touch Task」の編集画面へ

⑨「Actions」で「Screenshot」を選択
⑩「レ」をタップ

⇒「Action Edit(Screen capture)」画面に戻る

⑪ハードの「戻る」ボタンをタップ

⇒「Task Edit(screenshot)」画面に戻る

ここで、スクリーンショットが撮れるか確認します。

⑫「▷」をタップ

⑬起動の確認があるので「今すぐ起動」をタップ
※「今すぐ起動」をタップしなくても数秒後にスクリーンショットは撮られるので、折を見て「次回から表示しない」にチェックを入れたほうがいいかと思います。

スクリーンショットの保存先は「/sdcrard/TouchTask」フォルダです。画像を開くとスクリーンショットが成功していることが確認できます。
※ファイルフォーマットは「JPEG」になっています。


Topに戻る
 
・スポンサーリンク


5.ハードキーを押下する「Profile」の作成

 スクリーンショットが撮れることが確認できたので、次は、ハードボタン(ボリュームダウン)を押下するプロファイルを作成します。

①PROFILESタブ画面で、「+」ボタンをタップ
②コンテキストメニューがポップアップするので、「Event」をタップ
③「Event Category」選択画面で、「Plugin」をタップ

④「Event Plugin」選択画面で、「Touch Task」をタップ
⑤プルダウンメニューの「Keys」をタップ

⇒「Keys」イベント編集画面へ

⑥鉛筆マークをタップ
⑦注意(設定画面で「Keys」を有効にしておく※デフォルトで「有効」)を確認して「OK」をタップ

⇒「Touch Task」の編集画面へ

⑧「Actions」を選択(ここでは「UP」)
※「UP」:押下したキーを離したときにイベント発生
⑨「Keys」を選択(ここでは「volume down」)
⑩「レ」をタップ

⇒「Keys」イベント編集画面に戻る

⑪ハードの「戻る」ボタンをタップ

⇒PROFILESタブ画面に戻る

⑫Taskの選択を促されるので、先ほど作成した「screenshot」をタップ

これで、一応完成です。

実際に、ボリュームダウンボタンを押下して、スクリーンショットを撮れるか確認してください。
Topに戻る

6.スクリーンショット前後の確認画面

 前項までに作成したプロファイルとタスク(アクション)で、スクリーンショットを撮ることはできますが、折角Taskerを利用しているので、もう少し使い勝手をよくしてアプリらしくしたいものです。
 ボリュームダウンのハードボタンにスクリーンショットを撮るアクションを割り当てたので、ボリュームダウンボタンを押下したとき、本来の役割であるボリュームを下げる動作と競合してしまいます。
 そこで、ボリュームダウンボタンを押下したときに、本当にスクリーンショットを撮るか撮らないかのボタンを用意して、一旦タスクを保留できるようにします。
 また、保存先のフォルダを確認しないと「スクリーンショット」が撮れたか撮れていないかちょっと不安になるので、スクリーンショット画像を画面に表示して、保存するかどうかの選択ができるようにします。

もう少し具体的には
(スクリーンショット前)
・シーン(Scene)に、スクリーンショットを撮るか(後続のタスクを続行)/撮らないか(後続のタスクを停止)のメニューを表示します。(Element「Menu」を利用)

(スクリーンショット後)
・シーン(Scene)に、スクリーンショットした画像(Element「Image」を利用)をアクティビティとして画面に表示(Action「Show Scene」を利用)するようにします。タブには、「保存」(何もしないでAction「Destroy Scene」を使ってシーンを破棄)と「破棄」(Action「Delete File」を使ってファイル削除して、シーン破棄)を設定します。
※メニューを利用する方法もありますが、連続する複数のアクションを実行できそうもなかったので、安易にタブを選択しました。他にシーンに「保存」と「破棄」のテキストボタンを配置する方法もあると思います。

 
・スポンサーリンク


7.スクリーンショット画像ファイルの取得について

 スクリーンショットした画像ファイルは、Action「List Files」で、「/sdcrard/TouchTask」フォルダ内のファイルを日付降順で変数(ここでは%Screenshotfiles)に格納します。その一番目の変数(%Screenshotfiles1)が該当します。

①TASKSタブ画面で、「+」ボタンをタップ
②タスク名(screenshot_files)を入力して、③「レ」をタップ

⇒「Task Edit(screenshot_files)」画面へ

④「Task Edit(screenshot_files)」画面で、「+」ボタンをタップ

⑤「Action Category」選択画面で、「File」をタップ
⑥「File Action」選択画面で、「List Files」をタップ

⇒「Action Edit(List Files)」画面へ

⑦「Dir」:スクリーンショットを格納したフォルダを指定。(/sdcrard/TouchTask/)
⑧「Sort Select」:取得時のソート順を指定。(日付降順)

⑨「Variable」:格納する変数を指定。(%Screenshotfiles)
⑩保存のために「戻る」ボタンをタップ

⇒「Task Edit(screenshot_files)」画面に戻る

⑪「▷」をタップして、タスクを実行。
⑫「戻る」ボタンをタップ

⇒TASKSタブ画面に戻る

⑬「VARS」タブをタップして、変数に想定の値が格納されているか確認。

これで、「%Screenshotfiles1」を指定すれば、最新のスクリーンショット画像が取得できます。

Topに戻る
 
・スポンサーリンク


8.スクリーンショットを撮影するかどうかの確認する「Menu」エレメントの作成

※シーン編集の詳細についてはこちらを参照してください。

①SCENESタブ画面で、「+」ボタンをタップ
②シーン名(screenshot_select)を入力して、③「レ」をタップ

⇒シーン編集画面(Normalモード)へ

④虫眼鏡アイコンをタップ

⇒シーン編集画面(Editモード)へ

⑤「+」をタップ
⑥エレメントの「Menu」をタップ

⇒「Menu」のエレメント編集画面へ

・【UIタブ】
⑦「Source」:「Manual」を選択
⑧「Selection Mode」:「Single」を選択

・【ITEMSタブ】※メニューを登録
⑨「+」をタップ
⑩Labelに「撮る」と「撮らない」を入力

・【ITEM TAPタブ】※アイテム(「撮る」「撮らない」)をタップ時のアクションを設定

⑪「+」をタップ

(想定の動作)
・「撮る」をタップ→シーン破棄
・「撮らない」をタップ→以降のアクションを停止→シーン破棄

(各アクションの設定)
A:【Task】⇒【If】⇒(A)
B:【Task】⇒【Stop】⇒(B)
C:【Task】⇒【End If】⇒(省略)
D:【Scene】⇒【Destroy Scene】⇒(D)


 ハードの「戻る」ボタンをタップして、シーン編集画面に戻ったときのレイアウトです。
(左がEditモード、右がNormal モード)



これでは、少々みっともないので、レイアウトを整えたいと思います。

以下、作業の順番は問いません。(結構面倒で難しいです。)

・スポンサーリンク


1)アイコン部分を削除および文字の大きさを変更

・エレメント「Menu」編集画面の【UIタブ】
①Item Layoutの部分をタップ

⇒組み込みの「Item Layout」のシーン編集画面(Normalモード)へ

②虫眼鏡アイコンをタップ

⇒シーン編集画面(Editモード)へ

③Icon部分を長押し
④「Hide」をタップ→アイコン部分が赤枠になって、レイアウトから削除されます。

⑤Label部分をタップ

⇒「Label」のエレメント編集画面へ

・エレメント「Label」編集画面の【UIタブ】
⑥「Text Size」を変更(デフォルト「24」→「18」)

2)メニューの間隔を変更

・組み込みの「Item Layout」のシーン編集画面(Normalモード)
①「Touch Mode」をタップ
②「Resize]をタップ
③上下の▽△でメニューの縦幅を調整

3)シーンとエレメントの一体化とシーンの大きさを調整

・シーン編集画面(Editモード)
①「Menu」エレメント部分を長押し
②「Set As Background」をタップ
③虫眼鏡アイコンをタップ

⇒シーン編集画面(Normalモード)へ

④「Touch Mode」をタップ
⑤「Resize]をタップ
⑥上下の▽△でメニューの縦幅を調整

4)背景色を設定

・シーン編集画面(Editモード)
①「Menu」エレメント部分を長押し
②「Edit」をタップ

⇒「Menu」のエレメント編集画面へ

・【BACK GROUNDタブ】
③「Colour」の検索ボタンをタップ
④好みの色のところをタップ
⑤透明度をゼロに

・シーン「screenshot_select」の完成形

Topに戻る
 
・スポンサーリンク


9.スクリーンショット撮影後にファイルを保存するかを確認する「Image」エレメントの作成

①SCENESタブ画面で、「+」ボタンをタップ
②シーン名(screenshot_image)を入力して、③「レ」をタップ

⇒シーン編集画面(Normalモード)へ

④虫眼鏡アイコンをタップ

⇒シーン編集画面(Editモード)へ

⑤「+」をタップ
⑥エレメントの「Image」をタップ

⇒「Image」のエレメント編集画面へ

⑦「Image」のたすき掛け矢印をタップ
⑧変数名を入力 ※7.⑨で設定したもの

※ハードの「戻る」ボタンをタップ

⇒シーン編集画面(Editモード)に戻る(スクリーンショット画像が表示されている)

⑨「Image」エレメント部分を長押し
⑩「Set As Background」をタップ
 (「Image」エレメントを「screenshot_image」シーンの背景にして、そのエレメントがシーンの大きさに合わせてリサイズされるようにします。)
⑪3ドットメニューをタップ
⑫「Properties」をタップ

⇒プロパティ編集画面へ

⑬-1「Property Type」の『Activity』を選択
⑬-2「Background Colour」を設定(黒っぽくして、透明度をゼロします。)
⑬-3「Action Bar Style」を『Dark』に設定
⑬-4「Title」を『スクリーンショット画像』に変更
⑬-5「Tab Labels」に『保存,破棄』と入力
⑭「TAB TAP」タブが追加されているのでタップ
⑮「+」をタップ
(タブがタップされたときのアクションを設定します。)

・タブがタップされたときのアクション

(想定の動作)
・「破棄」タブをタップ→ファイル削除→シーン破棄
・「保存」タブをタップ→シーン破棄

(各アクションの設定)
A:【Task】⇒【If】⇒(A)
B:【File】⇒【Delete File】⇒(B)
C:【Task】⇒【End If】⇒(省略)
D:【Scene】⇒【Destroy Scene】⇒(D)


※ハードの「戻る」ボタンをタップ

⇒シーン編集画面(Editモード)に戻る

⑯虫眼鏡アイコンをタップ

⇒シーン編集画面(Normalモード)へ

⑰TouchModeで、⑱「Resize」をタップ
⑲シーンの大きさが画面いっぱいになるようにサイズを調整
※ハードの「戻る」ボタンをタップ

⇒SCENESタブ画面に戻る

Topに戻る

10.Task「screenshot」に上記のアクションを追加

4.で作成したタスクにアクションを追記します。

①PROFILESタブ画面で、プロファイル一覧の「Keys Action:・・」をタップして、プロファイル詳細を展開
②タスク「screenshot」をタップ

⇒「Task Edit(screenshot)」画面へ

③「Task Edit(screenshot)」画面で、「+」ボタンをタップ
以降「7.スクリーンショット画像ファイルの取得について」の⑤~⑩を実施

⇒「Task Edit(screenshot)」画面に戻る

④「Task Edit(screenshot)」画面で、「+」ボタンをタップ
⑤「Action Category」選択画面で、「Scene」をタップ
⑥「Scene Action」選択画面で、「Show Scene」をタップ

⇒「Action Edit(Show Scene)」画面へ

⑦「Name」にエレメント名(screenshot_image)を入力
⑧「Display As」で「Activity,Full Window」を選択
※ハードの「戻る」ボタンをタップ

⇒「Task Edit(screenshot)」画面に戻る

※ハードの「戻る」ボタンをタップ

⇒PROFILESタブ画面に戻る

これで、アクションの追加は終了です。
Topに戻る

11.スクリーンショット時の画面遷移とログ

では、実際にスクリーンショットを撮ってみます。

(A):ハードキー「ボリュームダウン」押下して離した時の画面
(B):「撮る」タップ後の(シーンが表示された)画面
(C):「保存」タブのタップ後の(シーンが消えて、スクリーンショットを撮った)画面

・上記のログ

 ログの見方は、こちらを参照してください。


・スポンサーリンク






Amazon.co.jpアソシエイト(商品検索)

Amazon.co.jpアソシエイト(商品検索)

-example
-, , , , , , , , , , ,