MacroDroidで車を降りたことを検知する方法【Android】

私は普段からほぼ車移動だ。 なので、車を降りたら何かするというシチュエーションが非常に多いのだ!

車で帰宅したらカギを開け、エアコンや照明のスイッチON、帰宅の連絡。 出先なら現在位置を記録とか。

生身の脚がすっかり退化してしまった私には、車を降りるという行動そのものが、イベント開始ボタンになっている。

めんどくさいことはやりたくない私。 車を降りた後の操作を全自動化したい私。

Androidの自動化アプリMacroDroidには「車を降りたら〇〇する」なんて都合のいいものは存在しない。 でも、楽したい。

そんな、車のエンジン停止という国家最重要機密をスマホで取得せんと奮闘した記録である。

目次

結論

検証環境:Pixel 8a(Android 17)/マツダコネクト/Ottocast A2AIR PRO

車に乗るたびに律儀に充電ケーブルを挿す「充電派」なら話は簡単だ。
きっかけ(トリガー)を『車のBluetooth接続中に電源の切断』にするだけで2秒で検知できるぞ。
安定性:★★★★★
検知速度:★★★★★
難易度:★☆☆☆☆

しかし、スマホをカバンやポケットに入れたままにしたい私。
毎回ケーブル差すなんてめんどいし、そのためだけにワイヤレス充電器買うのもなぁ〜
そんなワガママさんの場合、この技が使えない。
私があれこれ試した末に辿り着いた答えは『Android AutoのWi-Fi切断』だ!
安定性:★★★★☆
検知速度:★★★☆☆
難易度:★★★☆☆

完璧な降車検知を目指して

検知のために様々な方法を検証したが、それぞれに致命的な罠があった。

車のBluetooth切断をトリガーにする

【結果:大遅刻】

エンジンを切ってもナビの残電力がしばらく消えない車種が多く、車を降りて歩き出してからマクロが動くため遅すぎた。

車のUSBポートにPC用のBluetoothアダプターを挿す

【結果:使用不可】

エンジン始動でBluetoothアダプターが起動、スマホとペアリングされたアダプターがエンジン停止と共に電源が落ちるため検知できるかと思いきや、そもそも、ドライバーがないため、Bluetoothアダプターとして機能しない。

Android Autoの通知消去をトリガーにする

【結果:使用可能だが誤爆する】

普段は、Android Autoを使用している。
当然、Android Autoはエンジン稼働中のみの動作となっている。Android Auto起動中は、常に通知が表示されていたのでこれを利用することにした。

エンジン停止でAndroid Autoの通知も消える。この通知の消去トリガーは、想定通りエンジン停止のタイミングを取得することができた。

しかし、起動時に通知のオン・オフ(チャタリング)が何度も発生するのだ。マクロ側に複雑なチャタリング対策を組み込んでも動作が安定しなかったため、実用性を考慮して断念。

💡ちなみに、MacroDroidのトリガー設定でAndroid Autoの通知を対象にしたい場合、デフォルトのアプリ一覧には表示されない。アプリ一覧で「起動不可アプリを表示」にチェックを入れると表示される。

解決:Wi-Fi切断をトリガーにする

私の車は、有線接続のAndroid Auto/CarPlayにしか対応していないため、OTTOCAST(オットキャスト)製のワイヤレス化アダプターを使用している。

あらゆる方法を試した結果、最も実用的だったのが、Android AutoワイヤレスアダプターのWi-Fi切断を利用する方法だった。

ワイヤレスAndroid Autoの仕様の壁

はじめはワイヤレスアダプターのBluetooth切断をトリガーにすれば解決すると思った。

しかし、ここにワイヤレスAndroid Autoならではの通信の仕様という大きな罠があった。

ワイヤレスAndroid Autoは、Bluetoothだけで通信しているわけではない。

接続開始だけBluetoothを使い、その後の通信はWi-Fiへ切り替わる仕組みになっているのだ。

そのため、BluetoothはAndroid Autoの起動直後に役目を終えて切断される。

ワイヤレスAndroid Autoの仕様の図解

つまり、Bluetooth切断は「車を降りた瞬間」ではなく「乗った直後」に起きるため、降車検知には使えない。

BluetoothがダメならWi-Fiだ!…思ったら表示されない?

ならば、本音通信をしているWi-Fiの切断をトリガーにしよう!

そう考えてMacroDroidの設定画面を開いたのだが、ここで第二の罠が牙をむく。

設定したいのに、Wi-Fiの候補リストにワイヤレスアダプターのSSID(ネットワーク名)が表示されないのだ。

なぜ表示されないのか。理由は先ほど解説した「Bluetoothで認証してから、裏でWi-Fiを立ち上げる」というAndroid Autoの特殊な仕様そのものにある。

このWi-Fiは、自宅のように常時電波を出して待機しているわけではない。車に乗り、スマホとアダプターがBluetoothで「挨拶」を交わした後に、その場限りの臨時の通り道として初めてスマホ内に生成されるのだ。

つまり、自宅の部屋でいくらMacroDroidを開いても、スマホはそのWi-Fi電波の存在すら感知できないため、リストに出てくるはずがないのだ。
任意で接続したWi-FiではないのでMacroDroidのWi-Fiリストに過去の履歴としても表示されない。

しかし、Android Auto起動中は確実にWi-Fi接続されている。

(; ᐛ )ドウシヨウ…

設定は「実際の車内」で行う

この仕様の壁を突破するための答えはシンプルだった。

「実際に車に乗り、Android Autoが完全に接続されて動いている状態」でマクロを設定することだ。

Android Autoが起動している真っ最中であれば、スマホはアダプターのWi-Fi電波をしっかり掴んでいる。そのため、MacroDroidのWi-Fi選択リストにも、普段は隠れているアダプターのSSID(ネットワーク名)がひょっこり出現する。

具体的な設定手順は以下の通り。必ず車内で接続した状態で行ってほしい。

  1. 車内でAndroid Autoを起動し、スマホと接続させる。
  2. MacroDroidを開き、新規マクロを作成。
  3. 【トリガー】を追加 ➔ 「接続」 ➔ 「Wi-Fi状態の変化」を選択。
  4. 「ネットワークから切断時」を選択。
  5. Wi-Fiの一覧リストが表示されるので、現在接続されているワイヤレスアダプターのSSID(例:OTTO-XXXXAAWireless-XXXX など)を選択。

【検証結果】実際の計測で見るタイムラグ

「Wi-Fi切断が本当にベストなのか」を証明するため、エンジン停止の瞬間に手動で基準ログ(0秒)を記録するマクロを組み、実際のタイムスタンプを計測した。

なお、検証時の私の環境は以下の通り。

  • 車種(ナビ):マツダ(マツダコネクト)
  • スマホ:Pixel 8a(Androidバージョン17)
  • ワイヤレスアダプター:A2AIR PRO(Ottocast)

この環境で実際に計測した結果、

  • 電源切断:約2秒
  • Wi-Fi切断:約13〜14秒
  • Android Auto通知:13秒前後だが誤爆あり
  • 車Bluetooth:約64秒

ログから見えた決定的な事実とトリガー選びの結論

計測結果から、各トリガーの驚くべき実態が浮き彫りになった。

  • 電源の切断:約2秒(最速)
    文句なしの最速。
    ただし、これはスマホを車に乗るたびに電源接続する場合のみ使える最速トリガーだ。カバンに入れっぱなしの無線環境では使えない。
  • 車のBluetooth:1分4秒遅れ(大遅刻)
    今回の2回の検証では1分4秒(64秒)の遅延という結果だった。
    エンジンを切っても、残電力が切れるまでにこれだけの時間がかかる仕様なのだろう。車を降りて歩き出してからマクロが動くため、降車検知としては実用外だ。
  • Android Autoの通知消去:実用範囲内の速度だが…(地雷)
    タイムラグ自体はWi-Fi切断と同等だが、致命的な欠点がある。エンジンを切る前の走行中に、高確率で通知が消えたり出たりする「誤爆(チャタリング)」が発生しているのだ。これでは運転中に降車マクロが暴発してしまう。
    このトリガーを使用する場合はMacroDroid側でのチャタリング対策が必要となるため却下。
  • Wi-Fi切断:最も実用的
    スマホの処理を挟むため、エンジン停止から約13秒のラグは生じる。しかし、走行中の誤爆が一切なく、2回ともほぼ同じ秒数で安定して検知できている。

実際の計測ログ

1回目の計測ログ

13:14:07 – Android Auto通知消去(※起動時の誤爆①)
13:14:09 – Android Auto通知消去(※起動時の誤爆②)
13:20:21 – 【基準】エンジン停止(手動記録)
13:20:34 – Wi-Fi切断(アダプター電源オフ) ➔ 【13秒後】
13:20:34 – Android Auto通知消去 ➔ 【13秒後】
13:21:25 – 車Bluetooth切断 ➔ 【1分4秒後】

2回目の計測ログ(有線充電トリガーも比較)

14:12:21 – Android Auto通知消去(※起動時の誤爆①)
14:12:24 – Android Auto通知消去(※起動時の誤爆②)
14:13:13 – 【基準】エンジン停止(手動記録)
14:13:15 – 電源切断(有線充電トリガー) ➔ 【わずか2秒後!】
14:13:27 – Wi-Fi切断(アダプター電源オフ) ➔ 【14秒後】
14:13:27 – Android Auto通知消去 ➔ 【14秒後】
14:14:17 – 車Bluetooth切断 ➔ 【1分4秒後(64秒)】

MacroDroidでどうやって設定するのよ?

MacroDroidを初めて使う場合は、基本的な使い方を先に確認しておこう。

運転終了マクロの設定例

めっちゃシンプル。必要なのはトリガー部分だけだよ!

  • トリガー:Wi-Fi状態の変化 → ネットワークから切断時:OTTO-XXXX
  • アクション:バイブ(動作確認用)
  • 条件:なし

まとめ:自分のスタイルに合わせて最適なトリガーを選ぼう

「完璧な降車検知」について、量子干渉型分光探査計にて厳密な計測・検証した結果、車内でスマホをどう扱うかによって、選ぶべき最適解は変わるという結論に達した。

  • スマホをカバンに入れっぱなし、1mmもスマホを取り出したくない派
    「ワイヤレスアダプターのWi-Fi切断」が、誤爆なしで最も安定したベストな選択肢だ。
  • 車に乗ったら毎回すぐに充電、給電こそ命、バッテリー残量100%絶対至上主義派
    「車のBluetooth接続中 & 電源の切断」を条件にするのが、設定も簡単で文句なしの爆速(約2秒)の判定ができるぞ。

第1回「スマホをカバンに入れたまま降車検知選手権」の優勝者は、『Wi-Fi切断』氏となったのである。

ヒャッホォォォォォ٩( ᐛ )۶ォォォォォォォォォ

コメントする


目次