MacroDroidで通話録音を自動化してみる

MacroDroidはIFTTTのローカル版のような、と言っても分かりにくいか。
スマートフォンの状態変化をトリガーとして、マクロで設定した動作を自動で行わせるアプリだ。
例えば運転中にLINEが来た場合、マクロを有効にしておくと「ただいま運転中ですので後ほど返信します」と相手に自動返信するなど、色々なことが出来る。

広告

自動的に通話録音を開始したい

Googleダイアラによる通話の自動録音は、特定の地域でのみ有効だとGoogleは言っている。
では特定の地域とはどこかが明確には書かれていなかったが、現在はインドであると書かれている。
少なくとも日本は特定の地域ではなく、通話を録音するためには録音ボタンをタップする必要がある。
正確には着呼のあとで通話画面のメニューボタンを押し、開いたメニューから通話録音ボタンを押す。
これを自動化してみた。

トリガーは通話開始を設定する。
通話開始は通話路が接続されたときにトリガされる。
アクションは実行することを設定していく。
最初はWaitなしでやったのだが、画面が出る前にその位置をタップしてしまうようで動作しなかった。
そこで1秒のWaitを入れた。
Waitは500msでも動作したが、余り深く追求していない。

959,1925はメニューのタップ位置の座標で、これはマクロドロイドアプリで取得できる。
Xperia1 Vならこの数字で動作するが、他のスマートフォンの場合はタップ位置の座標を、そのスマートフォンの画面上の座標に変更しなければいけない。
開発者モードにすればタップ位置が表示されるので、その方が設定しやすいかも。
その後メニューが表示されるまで待つ為にWaitを入れる。
メニューが出たかなと思われる頃に、通話録音ボタンをタップする操作を行う。
これも同様に座標で示す必要がある。

座標位置はマクロドロイドアプリで取得できるのだが、これが結構大変だ。
タップ位置の取得モードに移行すると、下のようなダイアログが出る。

「通知を押してから」の意味が分かるだろうか?
私には全く分からなかった。
そこで色々なところを押してみると、通知エリアに↑と同様の通知が来ていて、そのアイコン部分を押せという事なのだ。
文字部分をタップするとマクロドロイドアプリが開いてしまい失敗、アイコンの所を上手くタップできると通知パネルが引っ込み、次にタップしたところの座標が記録される。

つまりこの状態でアプリを起動したり、タスクボタンを押すと、そのアクションが記録されてしまうわけだ。
予め通話アプリを開いた状態にして→通知パネルを引っ張り出してアイコンをタップ→記録モードになり通知パネルが引っ込むので→目的の所をタップ、という流れになる。
やることは簡単だが、アプリによる自動記録はちょっとコツが要る。

発呼時の通話状態が検出できない

単純なトリガで動作したのは着呼時のみだった。
発呼時には発呼ボタンをタップしたと同時に通話トリガが発動してしまう。
発呼中は録音ボタンの場所にSIM切り替えボタンが表示されているので、そこをタップしてしまう。
Googleダイヤラが悪いのか?Xperia1 Vが悪いのか?Android15が悪いのかは不明だ。

そこで発呼時と着呼時にフラグを立て、処理を分岐させることにした。
マクロ実行トリガを発呼時、着呼時、通話開始とした。
ただし発呼ボタンを押した途端に、発呼状態と通話状態になってしまう。

この3つの条件でマクロがトリガされる。
変数は予め設定しておく必要があり、TureかFalseかはアクション項で設定する。
通話開始時の除外条件として、電話帳に登録されている番号からの着呼を設定した。
電話帳に登録されている番号からの着信通話では、録音しない設定だ。

次にアクションを設定する。

オーバーレイ・バーはデバッグ用に付けているもので、そこが実行されると画面に文字が表示される。
最初の条件分岐は、トリガ条件として「電話の発信時」を指定している。
トリガ条件が複数あるので、その中の電話発信時でこのIF分のあとのアクションが実行される。
電話発信時にはincomingcall変数(変数は予め設定しておく)をTrueにする。
同様に次の条件分岐で、電話着信時にはincomingcall変数をfalseにする。

通話が開始されると次のif文で判定されるが、通話開始はincomingcall変数がfalseでなければトリガされない。
つまりこの条件分岐に来るときには、incomingcall変数がfalseで、かつ通話状態に遷移している状態(着信通話状態)だ。
この条件で通話録音のメニュータップ、通話録音ボタンタップを実行するようにした。

incomingcallに対してTrueとFalseが逆じゃないかと言われそうだが、色々実験してして論理を変えたりしてこうなってしまった。
通話開始時にTrueで実行にしたのでちょっと変だが、イニシャル値がFalseではないかと思うのでTrueで実行にした方が良いと思う。
つまりは変数名のincomingcallが適切ではないのだが、発呼ってなんて言うのだろう?
とりあえずこれで動作するようになった。

発呼・着呼で完全自動録音開始が出来た

発呼時に於ける通話状態を何とか検出できないかと実験してみる。
メニューボタンをタップすると、発呼中と通話中ではメニュー内容が異なる。
左が発呼中で、右が通話中だ。
発呼中と通話中で異なる文字列は「SIMを変更」と「保留」である。
これが検出できれば通話中である事を推定できるのではないか?

そこで次のようなマクロを作ってみた。

※追記

一致する文字列を”保留”のみにすると、通話画面から別の画面に行き、その後通話画面に戻ってくるとトリガがかかり、再度録音ボタンをタップして録音を停止してしまう。
そこで一致する文字列を”保留|[“停”]として、録音中には再度録音ボタンを押さないように変更した。
正規表現による文字列指定なので、”□正規表現を使用する”にチェックを入れる。

通話が開始される事をトリガとして、incomingcall変数をTrueにセットする。
それと同時にメニューボタンをタップする。
この変数による制御がないと、画面上に「保留」という文字が現れる度、例えばMailに保留と書かれていたり、閲覧しているWebサイトに保留と書かれていたりすると、マクロが起動してしまう。
incomingcall変数がTrueの状態で通話状態になると、録音を開始する。
これで発呼時にも着呼時にも通話が録音される。

ただし画面を読む頻度を上げる(レスポンスを改善する)と、バッテリー消費量が増える。
画面読み取りインターバルは250ms~5秒まで設定が出来る。
実際にどの程度のバッテリー消費量になるのかは未だ分かっていないが、少し気にしてみようとは思う。

音量制御を自動化した

他には充電中は音量を下げるマクロを作った。
充電器から取り外すと音量を上げる。
充電中はスマートフォンが目の前にあるので、通知などの音量は小さくしたい。
しかし外出時はバッグにスマートフォンを入れているので、音量が大きくないと気づかない。

これは設定変更だけなので、マクロ作りは極めて簡単だ。

マクロは有料版なら無制限に作れるのかな。

外出時に歩行中は音量を上げるが、電車移動(乗物移動)中にはマナーモードにするなども出来る。
他のアプリとの連携、移動速度の検出なども可能だ。
周囲の騒音に合わせて音量を変えることも出来そうだが、音量計測アプリを実行させておかなければいけないので、バッテリー負荷が増える。

クレジットカード利用速報をメールで送る

クレジットカードを利用すると利用速報が来るのだが、これは基本的にはスマートフォンでしか見ることが出来ない。
楽天カードはメールで通知が来るが、セゾンカードやPayPayカードはアプリで、dカードはドコモ独自のメッセージRか、dカードアプリから通知が来る。
従ってPCで直接確認することが出来ない。
普段スマートフォンを身につけている人はこれでいいと思うが、私はPCに向かっている時間が殆どなので、PCで確認したい。

トリガはスマートフォンの通知を検知することにする。
通知が発せられるアプリを選択し、通知内の文字列に”カードご利用”が含まれていれば、アクションを起こす。

Mail送信はGmailが簡単なので、Gmailで送ることにする。
これの設定は凄く簡単で、何という事無くMail送信設定が出来る。

通知の抑制やコントロールはマクロドロイドアプリでも出来るのだが、通知関係に関しては”通知設定Pro“アプリ、不要な通知の自動消去は”通知キャンセラー“アプリの方が設定が簡単だ。

充電制御はスマートコンセント連動で

今は充電制御機能の付いたスマートフォンが多いが、そうでない場合はスマートコンセントを制御することで充電率の調整が可能だ。
マクロドロイドで充電率を見て、80%に達したらスマートコンセントアプリを開き、OFFをタップする。
充電率が75%まで減少したら、スマートコンセントアプリでONをタップする。
従来はIFTTT連動などが必要だったが、マクロドロイドとスマートコンセント制御アプリを使うと、スマートフォンだけで完結する。

MacroDroidは無料で使える?

マクロドロイドアプリは、以前は無料で使えたそうだが今は買い切りになっている。
度々値上げされて今は900円だ。
無料で使い続けるためには3日に一度広告を見なければいけない。
夜中にマクロドロイドを自動起動して、広告を見終わったらそっと画面を閉じる。
なんてマクロを組めば、実質無料で使い続けられるかも。

私は広告が邪魔なので有料版にした。
クーポンがあったので200円安く買うことが出来た。

コメント

タイトルとURLをコピーしました