Tasker (Android)で電話の発着信情報を Google カレンダーへ記録

電話の発着信情報をカレンダーへ記録してくれる Android アプリ CallTrack が配信終了(権限をアップデートしなかったので Google Playから停止された?)したので、Tasker を利用して発着信情報を Google カレンダーへ記録するタスクの作成メモ

変数やイベントに統一感がなく「なんじゃこりゃ」連発だったので、整理も兼ねて
※キャッチ等の割り込みは想定してません
※Pixel 4a で作成


利用するであろう変数 Variables の情報

着信関連
%CNAME 名称(連絡先に無い場合、番号)
%CNUM 番号
%CDATE 日付
%CTIME 時刻

発信関連 通話中のではなく前回の発信情報 → 終話後に利用
%CONAME 名称(連絡先に無い場合、番号)
%CONUM 番号
%CODATE 日付
%COTIME 時刻
%CODUR 通話時間(秒)


データを取得したり記録したりする、状態(State)やイベント

状態(State) → 未採用
Call: 「リンギング → 終話 or 着信終了」 や 「発信 ~ 終話」
電話アプリがアクティブかどうか、みたいな感じで発信や着信のフィルタも「発信」が機能してないっぽくて使えねぇー

イベント
Phone Ringing: 着信(鳴動)
Phone Offhook: オフフック(受話器上げ)
Phone Idle: 待受状態(終話)
Missed Call: 不在着信

ということで、今回は4つのイベントを利用してデータの取得とカレンダーへの記録を行うことに決定

カレンダー記録に必要な情報
Tasker からの Google カレンダー時刻範囲は、登録時を基準に「何分前/何分後」(Calendar Insert の最初の項目)で指定する
3分通話後の終話で記録する場合「-3/0」 のように「3分前から現在まで」みたいな感じ
あとは、タイトル、本文等、好きなフォーマットで変数を置けばOK


各イベントで、どういう情報を記録するか
発信情報(%CONAME等)は、通話中ではなく前回の通話情報なので、データを取得する位置が異なります

大雑把な流れは
  • 着信情報は、Phone Ringing と Phone Offhook でデータ取得、Phone Idle で記録
  • 不在着信は、Phone Ringing でデータ取得、Missed Call で記録
  • 発信情報は、Phone Idle でデータ取得と記録
となります
リンギングがあったかどうかで、終話時に着信 or 発信を判定しなければなりません


各イベントでのタスク動作
%TTで始まるのをユーザー変数とした場合
4つのタスクを作成して、それぞれ4つのイベントへ紐付けします

Phone Ringing → 着信情報を保存
%TTCNAME = %CNAME
%TTCNUM = %CNUM
%TTCDATE = %CDATE
%TTCTIME = %CTIME
%TTTYPE = "着信"

Missed Call → 不在着信(カレンダー記録)
%TT~ を用いてカレンダーへ不在着信を記録(In/For = 0/0)
%TTTYPE == "" // 着信フラグ初期化

Phone Offhook → 通話開始時刻(Unixtime)を保存
%TTSTART=%TIMES

Phone Idle → 終話(カレンダー記録)
IF (%TTTYPE == "着信") THEN
    %TTDURSEC = %TIMES - %TTSTART    ※通話時間(秒)
    %TTDURMIN =  round((%TIMES - %TTSTART)/60)    ※通話時間(分)
ELSE // 発信
    wait 情報が更新されるまで数秒待つ
    %TTCNAME = %CONAME
    %TTCNUM = %CONUM
    %TTCDATE = %CODATE
    %TTCTIME = %COTIME
    %TTDURSEC = %CODUR    ※通話時間(秒)
    %TTDURMIN = round((%CODUR)/60)    ※通話時間(分)
    %TTTYPE == "発信"
END IF
%TT~ を用いてカレンダーへ発着通話を記録(In/For = -%TTDURMIN/0)
%TTTYPE == "" // 着信フラグ初期化


あとは、上記をコツコツと記述していきます

私は Google カレンダーへの記録と同時に、MailTaskプラグインを用いて Evernote へメールで転送(ベーシックプラン以上)して、履歴にコメントを付けています

コメント