マクロドロイドによる、Androidスマートフォンの通話自動録音マクロを作った。
マクロドロイドでは発信・着信・通話状態を検出できる事になっているのだが、Android15のXperia1 V では、発信時にオフフックキーをタップしたと同時に通話状態が検出されてしまう。
使用環境は以下の通りだ。
・SONY版Xperia1 V
・Android15
・Google Dialer 163.0.727615054 com.google.android.dialer
そこで通話状態の検出をマクロドロイドに任せるのではなく、画面遷移によって行うようにした。
ダイアル中と通話中の違いは、その他のメニューをタップしたときに現れるメニューの違いだ。
左がダイアル中で、右が通話中である。
ダイアル中はSIMを変更のボタンが表示されているが、通話中にはそこが録音になる。
またダイアル中にはない”保留”の文字が現れる。
ダイアル中に”SIMを変更”のボタンがアクティブなのがちょっと不思議で。これをタップすると発呼が止まるのかな?余り触ったことはない。

マクロでは、ダイアル画面が開かれると”その他”のボタンをタップする。
“その他”のボタンをタップしたときに表示されるメニューの中に”保留”の文字があれば、通話中であると判断して”録音”ボタンをタップする。

画面コンテンツトリガは”保留”の文字を見つけている。
画面上に保留の文字があるときにトリガがかかってしまうと、ブラウザで見たページに保留と書かれているとマクロがスタートしてしまう。
そこでincomngcallフラグ(ローカルフラグ)を使って、発信中か着信中である事を検出している。
録音が開始されるのは、電話帳に登録していない電話番号の発着信だ。
これもちょっと動きに難があり、電話帳から発信したときにはリジェクトされるが、電話帳に登録してある番号をダイアル入力すると録音が開始されてしまう。
アクションはフラグのセット、画面のタップを行う。
画面のタップを行うときに画面表示がONである必要があるそうなので、一応画面ONのコマンドを入れている。
不要であれば取り除いてしまってもいい。
最初のアクションは”その他”をタップすることで、次のアクションが”録音”をタップすることだ。
文字が現れてからタップをするので、遅延タイマは入れていない。
通話録音マクロ(拡張子は.macro) 右クリックで保存を選んでダウンロード、それをMacrodroidに読み込ませればOKだ。
通話状態の検出方法はいくつも考えられる。
当初は画面のタップ位置をXY座標で設定していたが、このマクロは文字検出になっているので、スマートフォンの画面解像度にかかわらず使用できるはずだ。
またマクロドロイドで発信時にも通話状態への移行が正しく検知できれば、文字列判定などは不要になる。
上にも書いたが電話帳仕様の有無の判定など、マクロドロイド側の動作の曖昧なところもある。
マクロの中身としては非常に簡単かつ単純なものなので、自分のスマートフォンやAndroidバージョンによって最適化すれば良いと思う。
録音が面倒なのは、ボタンを2回タップしなければいけないところだ。
マクロドロイドを使い、例えば音量UPボタンを押すと(音量は変えずに)録音を開始するなどの使い方も出来る。
トリガ条件として音量UPを使い、ボタン押下時に音量を変化させないオプションを使い、”その他”ボタンをタップし、1秒待って(画面が表示されるまで待つ)”録音”ボタンをタップするマクロを作れば良い。
追記
上記マクロを実行中、以下の操作を行うと不具合が起きる。
1.通話中(録音中)である。
2.通話の画面から、他の画面(他のアプリを起動するなど)に推移する。
3.通話画面に戻る。
この操作を行うと画面の中に”保留”が現れるので、再びボタンを自動タップしてしまう。
すると録音が終了する。
これの対策を行うためには、トリガ条件を”保留”のみではなく、”保留|[^停]”とする。
保留が画面にあり、かつ停(録音を停止するの文字)がない場合を正規表現したものだ。
(|がorであり^が否定を表す)
正規表現による文字列判定を行うので、正規表現のチェックボックスにチェックを入れる。

録音ボタンは、録音中には録音停止ボタンになるので、その”停”の文字が画面にあった場合にはトリガしないようにした。
コメント