TaskerをURLから制御できるようにする#3
Taskerを使った行動管理システムを作る#2
Taskerを使った行動管理システムを作る#1
前回までは、行動管理システムを作るというタイトルでしたが、前回記事のタイトルと被ってややこしいので、タイトルを変更しました。
URLから制御する理由としては、以下の様なものが有ります。
- Evernoteリンククリックでタスクを実行したい。
- NFCタグにかざすとタスクを実行したい。
- 複数端末間で同時に処理が行えたり、処理する端末を指定したい
- ZooperWidgetなどのウィジェットアプリクリックや、AutoWareからの入力など、URLの定義だけで新しい処理を追加できる。
- URLの定義しだいで引数入力が出来る(Taskerのショートカット機能では引数入力が出来ない)
今回は実際の処理と、Taskerの設定を書いていきます。実際にはかなり複雑な設定になっているので、わかりやすく書くことが難しいので、大体の流れの説明のみとしておきます。
まずは、URL表示のIntentをAutoShare経由で受信するための設定
ProfileにEvent>AutoShareを追加して、textが"tasker://"で始まるという条件で設定します。実行するタスクにはAutoShareSearchを追加して実際の処理を追加していきます。
AutoShareSearchではURLを解析して実行するロジックが必要になります。かなり長いので簡単に書いておきます。
最初は、URLのドメインごとに分解した配列を作る処理を設定します。
実際にはこの後に変数入力のための、入力機能を実装しています。URLの一部を入力するための機能で、”tasker://Search.Evernote.!何を検索しますか/”のようにエクスクラメーションマークで始まる部分を実行時に入力できるようにしています。
URLだけでいろいろしたい場合はここでやりたい機能を定義すれば良いです。
僕の場合は、こんなURLを定義しています。.は\\で表現して実行時にエスケープ処理しています。
- tasker://Search.Evernote.!何を検索しますか/
- tasker://Execute.Schedule.Event.個人予定.映画鑑賞/
- tasker://Execute.Tasker.YogaTablet.SleepTracking.Start/
- tasker://Execute.Alert.SetTimer.300/
- tasker://Execute.Tasker.Task.SearchFile.!何を検索しますか.com\\google\\android\\youtube/
- tasker://Execute.Tasker.Broadcast.Synchronize.VoiceCommand/
tasker://Project.****/のようなURLの場合は別ロジックで処理します
最後はAutoRemoteで他の端末にもURLを通知しています。
次に、Project機能と、音声入力機能についてですが、基本的に両方ともあらかじめ保存しておいたDropBox上にあるTextファイルを端末に同期して、Textファイルの中に記述しておいたURLを上から順に実行していく処理を記述しています。
ExecuteProjectTaskの内容は、まず2、3はDropBoxとの同期をしています。6.ReadFileで同期したテキストファイルを読み込みして、変数”ScheduledTaskUri”に保存するというところまで定義しており、それをProfile>Event>VariableSetで捕捉して別タスクで処理を定義します。
同じくExecuteVoiceCommandという名前のタスクを作り、ほとんど同じような処理を定義します。音声からの入力の場合は以下のようにDropBoxにファイルを作り中にURLを保存しています。
音声入力はAutoVoiceを利用して、Profileを作っておいて、”コマンド お風呂”のように言うと、お風呂.text内のURLが実行されます。AndroidWareデバイスからもAutoWareを使って実現できます。AutoWareの場合は、CommandPrefixを設定しておけば、”お風呂”というだけで実行されるように設定できます。
変数”ScheduledTaskUri”がセットされて実行されるタスク”DelayTaskExecute”を作成します。画像では4でAutoShareにURIを渡しています。
大体の処理の流れはこんな感じになります。また暇な時に、実際にどういう動作をするのか動画でもアップしようかと思います。