Joinのカスタムアクションを活用する
JoinはTaskerと組み合わせることで強力な操作性を発揮します。で、私、通知notificationを用いて強引に時計から親スマホのHotspotのオンオフとかしていたけれど、Joinのカスタムアクション使えばそんなことしなくて良いことに気が付いた。
JoinからTaskerの任意のタスクを起動する方法
https://forum.joaoapps.com/index.php?resources/-arun-any-task-from-anyutoapp.139/
公式に説明動画付きでやり方のヘルプが載っている。英語の上に、Taskerの知識がある程度有ることが前提のようで、Joinから直接コレ読んだときは意味不明で訳わからなかった。だってその時点ではTasker使ってなかったし。なので、私も初心者ですが、わからなかったことヘの追記を箇条書きしておく。
基本的に、何故かは分からないが、この説明の通りにするとJoinのカスタムアクションからTaskerのタスクが実行できる。
- "=:="はTasker構文(?)での区切りを意味する。task=:= なら、初心者的理解は、「task;」か、「task<br>」みたいな感じ。Taskの後に構文的なスペースが挿入されるというか。
- %が頭に付いてる文字列は変数を意味する。
- Autoapps commandを利用するため、Autoappsはインストール必須。Tasker初心者にはAutoapps必須やで。あとAutoToolsプラグインも使ってる。
- Joinのカスタムアクションは、あくまでTaskerへの命令のみを送るのみのもの、だと思う。これからAutomateなどで待ち受けているBroacast intent receiver を叩くことは出来ない、と思う。
- Joinのカスタムアクションに別アプリ、Automateなどからpayloadのような引数をわたすことはたぶん、出来ない。固定のアクションを実行できるだけ。まぁやり方有るのかもしれないが。
- たぶん、やっていることは次の通り。たぶん。
- Autoapps command(中にJoinのカスタムアクションも含まれる)で発行されたコマンドのうち、頭に「task」が付いたものをキャッチする。プロファイル。
- Taskerに登録されているタスクをリストアップする。%taskに格納する。
- 引き渡されたtask=:=の後の文字列と、リストを比較する。%aacomm はたぶんAutoApps Commandのこと。これはAutoApps群(Joinが含まれる)から送られてくるコマンドを格納してる変数。
- この比較を行っているのがAutoTools。%task()をカンマで区切った文字列として見てる。なお、%taskの後ろの()は複数の数の格納を意味するようだ。アレイという意味か?
- %amatchedtexts()は、All Matched Textsのことだと思う。完全一致した文字列を格納してる変数。
- で、%amatchedtexts()に格納されてるうちの1番目?のコマンドを実行する。なんで0じゃないのかは知らぬ。
- と言うことで、2、3、4、5はコマンドが既存のTaskと一致してるか見てるだけ。直接%aacommを実行したらアカンのか?
-
→試したらイケる。確かにこうして既存タスクとの一致を見るのは賢いと思うが、初心者が知りたいのはそんな理解もしていない呪文的なやり方じゃないと思うんだ、、ここらのヘルプの冗長な構造がTaskerの弱点だと思う。そりゃ理解してる人には情報多くて嬉しいなーなるけど。
関連記事と親スマホ側のプロジェクト
Joinを利用してフルAndroidスマウォから親スマホの電話を発信させる、その2 - diablo3cs’s diary
アイデア: 電波の悪い場所で自動的に親スマホのwifiテザリングに切り替える - diablo3cs’s diary
上2つの記事での親スマホのTaskerプロジェクトをまとめたもの。一部、わいの接続確認のために音声出ます。
https://drive.google.com/file/d/1427PtrP3dR3vWr5QvehHViF710X8sXNm/view?usp=drivesdk
Taskerの下側タブからプロジェクトをインポートしてみてください。
プロファイルの説明だけ。タスクはそれに応じたものが付いてます。
- Get notification and Call : ↑記事の、Joinを経由して腕時計から親スマホに電話させるときに使うもの。Joinのカスタムアクションが外部からの変数を自動的に格納出来ないので、通知notificationを利用しているもの。今回は関係なし。
- Get notification Hotspot on : 特定の通知notificationが表示されるとHotspotをオンにして、喋る。↑記事で書いたとおりTaskerの説明ではAndroid10以上で動かない旨があるが、うちはAndroid10でも動いてる。
- Get notification Hotspot off : 特定の通知notificationでHotspot をオフにするだけ。
- AutoApps Command~ : 今回対象の。Autoapps commandが送られると反応するプロファイル。
フルAndroidスマートウォッチ側ですること
- Joinを起動する。
- 左上からナビゲーションバーをの呼び出して、アクションを選択。
- 右下の+から、アクション追加。
- CUSTOMを選択。
- 適当に名前を付ける。
- commandの部分に、頭に"task=:="を付けて、親スマホのタスク名を入れる。下の写真の場合は「Hotspot on」。
- deviceボタンから、送るデバイスを選択する。親スマホのこと。ウチの場合は「Redmi Note 9S」
- その下にあるDONEボタンを押して保存。みえねーが何故か400x400でも押せた。押せないときは、Optimization(またはシステムの最適化)のThird party adapterをオンにすると良い。
- Automateなどから、Joinのカスタムアクションをショートカット起動時させれば、いちいち通知notificationを出さなくても親スマホのHotspotオンオフなどを切り替えられる。ショートカット起動じゃなくて、Taskerプラグイン起動の方が正当か。なお、当然ながらデバイス毎に再設定する必要がある(共有化出来ない)。内部で使っているだろうURIが端末毎に違うためかな?
Joinすごいな。
補足
- AutoAppsで出ている関数のうち、%aapar() はこの場合、=:=の左側なので、先頭の"task"が格納されている。これ、2個目からの"=:="では%aaparに格納できないんかな?
- CUSTOM ACTIONのcommand下側にある「Write Prompt~」は実行時にダイアログで追加のコマンドを求めるもの。実際にはコマンド本文の後にさらに=:=を追加して入力された文字列を追加する。
- 最初の"=:="以降は、%aacomm()に順番で格納されている。