WunderLINQでGoogle Mapsを操作する

最初に

Navitimeツーリングサポーターの操作(別記事WunderLINQでツーリングサポーターを操作するを参照ください)がうまく行ったことに気を良くして、今度はWunderLINQによるGoogle Mapsの操作にも挑戦してみた。
因みにAndroid端末上でのGoogle Mapsは、単なる「マップ」というアプリ名で、標準インストールされている場合が多い。WindowsとかWordってのもどうかと思うけど、後から色々困るのだからマップ等という一般名詞を名乗らないで欲しいよね。(脱線)
ツーリングサポーターとGoogle Mapsの大きな違いはズーム操作のUIだ。
前者はGUIボタンの+とーをクリックする方式だが、後者は2つの指でいわゆるピンチイン・アウト操作を行う方式。
さーて、Taskerでこのピンチ操作を行うためにはどうすれば良いのか調べたところ、導入済のAutoinputでは(root化しない限り)不可能であり、TouchTaskという別アプリを導入すればできそう。
で、このTasker+TouchTaskの組み合わせでピンチ操作によるズームをホイール操作で実現することができたので、以降に簡単に説明する。
例によって、ある程度Tasker等の知識を有する人向けに文字のみでゴリゴリ書くので、ついてこれる人だけついてきてくだされ。

Step 1) TouchTask(アプリ)の導入

既にTaskerは導入済の前提。
TouchTaskは無料のアプリ。
例によって各種権限を要求されるので、求められるがままに全て与える。
Taskerとの統合操作等何も不要で、TouchTaskの導入が終わればTasker側から呼び出せるようになっているはずだ。

Step 2) Tasker 上のタスクの作り方

ツーリングサポーターの場合(別記事を参照ください)と同様に、プロファイルとタスクを組んでいくのだが、そのタスク内で今度はAutoinputではなくTouchTaskを呼び出す。
Taskerのメイン画面を「タスク」に切り替え、+ボタンを押して新規タスクを作成する。
とりあえず名称は”PinchIn”とする。(何でも良し)
更に+を押してアクションを作成する。
カテゴリーはプラグイン→TouchTask→Gestures と選択。
アクション編集画面になるので、最上段の「設定」を押すとGestureの詳細を定義する画面となる。
画面上部の上向き指アイコンを押すと、GUIを実際に操作して、その時のGestureを記録することができるのだが、Pinch操作の場合どうもうまく行かない。
そこで、数値入力でゴリゴリ入れることにする。
まず、Gesture は”Pinch” を選択。
次のPointは最初のタップの座標を入れるのだが、2本指ジェスチャーの場合どっちの指の座標なんだろう?
まあそのあたりは適当に、僕の場合は 500 500 という値を入れた。
1つ目の数値が画面左端からの水平(x)座標、2つ目の数値が画面上端からの垂直(y)座標らしい。
まず自分の端末の画面サイズ(ピクセルサイズね)を調べてそれに合わせる必要がある。僕の端末(OPPO Reno 5 a)は縦2400x横1080ピクセル(縦向きの場合)だ。
次に注意が必要なのが画面の縦向きモードと横向きモードで座標系が入れ替わること。
横向きにすると縦1080x横2400ピクセルになる。
実は最初のタップ座標の2つ目の数値を(縦2400のおよそ半分ということで)当初は1000に設定していたのだが、これでは画面を横向きにして使うとピンチ操作の一方の(仮想の)指が画面をはみ出してしまうのだ。というわけで 500 500 を開始座標にした次第。
続いて ”Start spacing” だが、Pinch操作を開始するときの指の間の距離を指定する。僕は 100 としてみた。
次の ”End spacing” は Pinch 操作終了時点の指の間の距離。300 としてみた。
次の “Orientation” はPinchの方向(角度)だと思うが定義が良くわからない。とりあえず 90 としてみた。
最後の ”Duration” は、Pinch操作の開始から終了までの時間、つまり操作の素早さをms単位で指定する。これが結構悩んだ。あまり小さく(速く)すると正常な操作として認識されず、大きく(遅く)するとズーム操作がもっさりになってしまう。試行錯誤の上、僕は 300 にした。
最後の ”Wait for text appearance” は空白のままで良し。
以上で、画面上部のチェックボタンを押して Task 定義は完了。

続けて説明してしまうが、逆操作の PinchOut の方は、Start spacing と End spacing の数値を逆にする(前者を300、後者を100にする)ことと、Orientation を 270 にする。他は同じ。

Step 3) Profile の作成

Tasker のプロファイルの作り方自体は、ツーリングサポーターの場合と同じ。
つまり、「アプリ」(ステート系)で「マップ」を選択、発動条件をもう一つ追加して「イベント」→「プラグイン」→「Autoinput」→「keys」で「Dpad Up」や「Dpad Down」を指定し、ここから発動されるタスクとして、作成済のPinchInやPinchOutを指定すれば良い。
もう一つ便利なタスクを作って見た。
TouchTaskではなく、Autoinputだけで作成できる。
Google Mapsの画面右端に、二重丸の上下左右に棒が生えたようなGUIボタンがあるが、これを押すと現在位置が地図の中心になる。既に現在位置が中心にある状態で更にもう一度このボタンを押すと、押す度に画面上部がコンパスの北に固定されたモードと、固定が外れて二本指で自由に向きを回転できるモードが切り替わる。
これをホイールの右押し(keyで言うとDpad Right)に割り当てると、地図がどこか明後日の方面を表示していても一発で現在地に戻ってくるので、なかなか使い勝手がよろしい。

最後に

Tasker + TouchTask + Autoinput で、WunderLINQのホイールから Google Maps をコントロールできるようになった。
この手の automation 系は iOS の方が進んでいるように感じているが、Android でもちょっと頑張って環境さえ作ってしまえば結構何でもできることがわかったよ。
僕自身、調べながら、試行錯誤しながら書いている程度なので、全然詳しい人ではないのだけど、知りたいこと、調べて欲しいこと等あれば、記事にコメントでも気軽にくだされ。

コメント