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 へメールで転送(ベーシックプラン以上)して、履歴にコメントを付けています
コメント