2022-11-07

Tasker の Android Auto 接続プロファイル

 

 

Tasker プロファイルのコンテキストに、%UIMODE という変数の状態をトリガーにできるものがあります。

 

 

%UIMODE はグローバル組み込み変数です。

 

変数が持つ値は "car" / "desk" / "appliance" / "tv" / "watch" / "undef"/ "normal" となっています。

 

 

ディスプレイオーディオとデバイス(スマホ)が接続されると、"normal" が "car" に変化しますので、接続状態を検知することが可能になります。

 

 

 

 

 %UIMODE の使い方 

 

 [Android Auto 接続状態] を検知し、[タスク] を実行できます。

 

具体的には、プロファイルのコンテキストで [状態] を選択し、[変数] → [変数の値] と進み、[条件] に %UIMODE=car とし、実行させるタスクを構成します。

 

こうしておくと、Android Auto が接続されたときに、この状態が検知されて構成しておいたタスクが実行されます。 



例では「テスト1」タスクが実行されます。


「テスト1」タスクは Spotify を起動し自動再生するタスクを構成してみました。

 

これは UMIDIGI s5 Pro(Android 10)で実際に作成し、Android Auto 接続で Spotify の自動再生を確認済みです。


 ※ Android Auto の設定で [音楽を自動的に再生] をオフにしておきます

   そうしないと「テスト1」タスクを実行せずとも再生されてしまいます


 

 

Mi 11 lite 5G ではこの変数が機能せず、%UIMODE=car に状態変化しません。

 

いろいろ調べたのですが、日本語サイトには %UIMODE が機能しないことについての情報がありません。

 

 

海外には少し情報がありました。

 

それによると Android 11 まではこの変数が有効だったが、Android 12 でなぜかこの変数が機能しない、という報告がありました。

 

 

Mi 11 lite 5G は Android 12 なので機能しなかったのだと思われます。

 

Tasker の Android12 でのバグなのか、機能停止にしたのかは定かではありません。

 

 

Android 12 の場合は、%UIMODE が機能しないので、Bluetooth 接続で %UIMODE の代わりにしていました。

 

ですが、一時的に Bluetooth が切断になったりして、これを考慮するとタスクが少々複雑化しています。

 

 

複雑化しましたが、Bluetooth 接続/切断イベントで、一応使えるところまでタスクを構成できました。





 %UIMODE の代替 

 

%UIMODE が機能しない問題について reddit.com に質問した方がいて、それに回答した方が AutoNotification アプリの Intercept を使用するとよい、とありました。


ディスプレイオーディオに接続された Android Auto の通知を Intercept(横取り)しそれを状態コンテキストで判断する、というものです。

 




 AutoNotification による具体的なやり方 

 

まずは AutoNotification アプリ(Tasker プラグイン)をインストールします。

 


 

有料アプリ(260円)ですが、短い動画を視聴すれば無料で利用できます。

 

アプリの起動後に [Use for Free] をタッチし、動画視聴しますと無料使用のための報酬が得られます。


次に [Notification Interception] をタッチし、[Intercept All] と [Intercept Tasker Notification] にチェックを入れます。


そしてスマホの [システム設定] → [ユーザー補助] → [ダウンロードしたアプリ] → [AutoNotification Toast Intercept] をタッチしてこれをオンにします。

 

 

また、このアプリの「バッテリー最適化をしない」にします。

 

Mi 11 lite 5G の場合は [自動起動:オン] と [バックグラウンド:無制限] を設定します。

 

 

準備はこれだけです。

 


Tasker でのプロファイルの設定は次のようにします。


 ① ➕ でプロファイルを新規作成します


 ② コンテキストのカテゴリ一覧が出ますので [状態] を選び、

   [プラグイン] → [AutoNotification] → [Intercept] を
   選択します

 

 ③ [設定] の右側にある、ペンマークをタッチします

 

 ④ [Apps] をタッチし [Android Auto] にチェックを入れ OK とします 


 ⑤ ナビゲーションボタンの [◀] で戻り、さらにもう一度 [◀] で戻ります


 ⑥ 新しい [タスク  ➕] を選びタスクを構成します。



以上で Android Auto に接続したら構成したタスクが実行されるようになります。



先の %UIMODE と、この AutoNotification は、ともに Android Auto 接続を検知し、タスクを実行します。



なお、Android 12 である Mi 11 lite 5G は %UIMODE は機能しませんが、AutoNotification は Android Auto 接続を検知してタスク実行することを確認しています。





 Android Auto 切断の検知 

 

Android Auto 切断は %UIMODE≠car で検知できますが、AutoNotification では検知できません。

 

AutoNotification の場合、接続通知を検知してくれますが、切断時は切れてしまっているので通知検知できないのです。



なので、Android 12 以降の場合、Android Auto 切断は別の手段で検知する必要があります。

 

 

 

 

 Android Auto 接続処理の流れ 

 

 ① 最初にディスプレイオーディオとデバイスを Bluetooth 接続します

 

 ② 次にディスプレイオーディオ側からの Private WiFi HotSpot の
  電波を受けて、デバイスがこれに接続します

 

 ディスプレイオーディオの機種によって Bluetooth を切断するものがあります

 

 

Bluetooth 接続状態が維持されていれば、Bluetooth 切断検知で Android Auto 切断とみなせます。


 

Android Auto 接続されたら Bluetooth 切断するディスプレイオーディオ機種の場合は、別の手段が必要です。

 

 

この場合は Android Auto 切断検知が難しいという問題がありますが、残念ながら解は見つけていません。



 

 

ワタシの保有しているディスプレイオーディオは 2機種あります(Carpuride 9"T86F 7" Smart Screen Player)。

 

 

どちらも Android Auto 接続中は、Bluetooth 接続が維持される仕様ですが、Android Auto 接続の瞬間に Bluetooth が一旦切れて、再び接続状態になります。


この「Bluetooth が一旦切れ」る問題が、Bluetooth 接続で Android Auto 接続判定した場合、タスクが少し複雑化するのです。

 

 

両機種ともに Apple CarPlay 接続時は Bluetooth が切断されます(CarPlay の仕様か?)。

 

 

Android Auto 接続時は Bluetooth 接続は維持される仕様ですが、Android Auto 接続の瞬間に Bluetooth が一旦切れて、再び接続状態になります。



 

 

 

 

時流はディスプレイオーディオが主流になりつつあると思われ、Android Auto 接続時の自動化ツールの出番があるのではないでしょうか。



Tasker 利用時の一助になれば幸いです。






0 件のコメント: