rthome_tasker_rule
Taskerを使って、家族に半自動で帰宅をメール通知する方法を考案しました!
Profileで位置情報を取り続けると電池消費が半端ないので、Action時に指定した座標の範囲内にいるか判定しています。

条件を決める

  • 場所A(会社とか友人宅とか)で帰宅通知ボタンを押したら 今から帰るよー を送信
  • 場所B(最寄り駅とか)で帰宅通知ボタンを押したら 駅についたよー を送信
  • それ以外の場所で帰宅通知ボタンを押したら 今帰ってるよー を送信

条件を調べる

  • 場所Aの条件は特定のSSIDに接続している場合
  • 場所Bの条件は地図座標(X,Y)が特定範囲内
    Googleマップの地図上で右クリックして この場所について をクリックすると座標がわかる。
    tokyosta_point
    座標は小数点下3桁で大まかに調べる。(例:東京駅周辺 35.678~35.684, 139.764~139.770)
    tokyosta_point3
    この黒枠の中で帰宅通知ボタンを押したら、駅についたよー メールが作成される。

メール作成について

メール送信にはGmailアプリを使います。インテントでメールを作成しています。

Actionandroid.intent.action.SENDTO
MimeTypemessage/rfc822
Datamailto:通知先メールアドレス
Extraandroid.intent.extra.SUBJECT:帰宅通知
Extraandroid.intent.extra.TEXT:%RT_HOME_MSG
Packagecom.google.android.gm
Classcom.google.android.gm.ComposeActivityGmail
TargetActivity

ガラケーなど一部の機種では文字化けして正常に表示できない場合があるようです。
有料のLocale SendSilentMail Plug-inで自動送信をした場合にはUTF-8でも上手く動いているように見えます。

Taskを作る

# 変数%RT_HOME_MSGをクリア
Variable Clear(%RT_HOME_MSG)
# 特定のSSIDに接続している時
Variable Set(%RT_HOME_MSG,今から帰るよー) If %WIFII ~ *特定のSSID*
# 上記条件が実行されず変数%RT_HOME_MSGが空の時
If %RT_HOME_MSG !Set
    # GPS,Netで自機位置を特定
    GetLocation(Any,10)
    # GPS位置取得時間がNet位置取得時間より先の時、GPSで取得した位置情報を変数%LOC_Pに格納
    Variable Set(%LOC_P, %LOC) If %LOCTMS Set & %LOCTMS > %LOCKNTMS
    # Net位置取得時間がGPS位置取得時間より先の時、Netで取得した位置情報を変数%LOC_Pに格納
    Variable Set(%LOC_P, %LOCN) If %LOCNTMS Set & %LOCNTMS > %LOCTMS
    # 位置情報の変数%LOC_Pをカンマで分割して、それぞれ変数%LOC_P1,%LOC_P2に格納
    Variable Split(%LOC_P,,)
    # 変数%LOC_P1を数値として扱う(この時点で%LOC_P1の値は小数点下3桁に削られる)
    Variable Set(%LOC_P1, %LOC_P1, Do Maths=True)
    # 変数%LOC_P2を数値として扱う(この時点で%LOC_P2の値は小数点下3桁に削られる)
    Variable Set(%LOC_P2, %LOC_P2, Do Maths=True)
    # 変数%LOC_P1,%LOC_P2の値が範囲内に含まれる時
    Variable Set(%RT_HOME_MSG, 駅についたよー) If %LOC_P1 > 35.678 & %LOC_P1 < 35.684 & %LOC_P2 > 139.764 & %LOC_P2 < 139.770
End If
# 上記条件が実行されず変数%RT_HOME_MSGが空の時
Variable Set(%RT_HOME_MSG, 今帰ってるよー) If %RT_HOME_MSG !Set
# 確認ダイアログ後にメール送信するならこっち(Locale SendSilentMail Plug-in)
Menu(%RT_HOME_MSG, 5, Items("No",Variable Clear(%RT_HOME_MSG)), Items("Yes", SendSilentMail(通知元メールアドレス,通知先メールアドレス,帰宅通知)))
# Gmailアプリにメール作成画面のインテントを発行するならこっち
Send Intent(android.intent.action.SENDTO, Mime Type=message/rfc822, Data=mailto:通知先メールアドレス, Extra=android.intent.extra.SUBJECT:帰宅通知, Extra=android.intent.extra.TEXT:%RT_HOME_MSG, Package=com.google.android.gm, Class=com.google.android.gm.ComposeActivityGmail, Target=Activity)

Gmail用XML SendSilentMail用XML

帰宅通知ショートカットを作る

ウィジェット追加 → Tasker → Task Shortcut

通知したい時に実行する

起動したGmailのメール作成画面を確認して送信するだけ!
キャリアメールのIMAP+SMTPを利用していれば、携帯電話からメールを出したように扱えますね。

おかえりなさいおかえりなさい
中島みゆき

ヤマハミュージックコミュニケーションズ 2001-03-28
売り上げランキング : 8643

Amazonで詳しく見る
by G-Tools