2014/11/28

Taskerを使おう(5) ウィジェットで動作するタスクをつくろう

 Taskerでもウィジェットを貼り付けることが出来ます。

 なんのウィジェットかというと、単独で動作するタスクです。

 今回はタップするとBTテザリングをオン・オフできるタスクを作ってみました。

 オン・オフする時はオンかオフがわかるようにするための仕掛けをしないといけません。
 そのために、Variableを使用します。

 Variable Setを使うと、特定の値(変数)をセットすることが出来ます。
 まずは特定の値を入れる箱みたいなものをつくります。
 箱には「%○○」という名前をつけます。
 Taskerには最初からこの箱が用意されていて、その場合は%AIR(機内モードの判定)のように全部大文字で表記されます。
 最初の一文字目だけ大文字だと他のタスクにも使い回しが出来、全て小文字だとそのタスクにのみ有効となるそうです。
 また、Taskerに用意されている名称以外を用いれば全部大文字で新規に作っても問題ないみたいです。

 今回はオン・オフなので、タップした時に0か1が入る箱をつくりました。
 Zooperと連携する場合は全部大文字でないといけないみたいなので「%BTTEZA」と作っています。

 また、今回は条件が分岐しているので、1の時はつなぐ、0の時は切断するという判定をしないといけません。
 そのためにif文を使います。MSX使ってた頃からこのへんは変わりませんね。

 Taskerのタスクタブで新規作成を選んで、適当な名前をつけます。
 Task→Ifを選択するとConditionの項目が出ます。ここの%となっているところに自分なりの変数の名前を決めて入力します。自分の場合は「%BTTEZA」です。

 真ん中の「~」を押すと条件が出てきます。今回は1の時なのでイコールを選択したあと、Valueに1を入力します。
 これで「もし%BTTEZAが1だったら」という条件が出来ました。

 次に%BTTEZAが1の時の動作を設定していきます。
 前に記事に書いたとおり、WifiをオフにするのとBluetooth Auto Connectを使って手持ちのテザリング母艦に接続する処理をします。

 これで接続する処理が終わったので、切断処理をするときのために%BTTEZAに0を入れる処理をします。
 Variable Setを選択してToのところに0を入れます。
 この処理により%BTTEZAのなかに0が入りました。

 ここまででIf文の%BTTEZAが1の時の処理が終わりましたので、次は1でない時の処理をします。
 Task→Elseを選択します
 さっきのIfが1の時という条件でElse(その他の)という条件になるので%BTTEZAに1以外の何かが入っている時の処理が次に続きます。

 前回と同じように、WifiをオンにするのとBluetooth Auto Connectを使って手持ちのテザリング母艦から切断する処理をします。

 これで切断処理ができたので、前と一緒で、次に接続処理ができるようにVariable Setを使って%BTTEZAに1をいれておきます。

※Else処理なので、1以外ならなんでもいいのでVariable Clearで空っぽにしてもいいんですが、ほかにも変数を使う可能性があるため、0を入れておいています。

 ここまでで全部の処理が終了したので、Task→End IfでIf文の終了をします。

 この後に書いてあるのは、Zooperに今持っている%BTTEZAの値を入れる処理です。
 これについては、今後解説します。

 これにてタスクが完成しました。
 しかし、単独で動かすためには、なぜかタスクにアイコンが必要らしいので、右下のアイコンをタップしてImageSlectから適当にアイコンを選択しておきます。
 また、最初の処理で%BTTEZAが1になっていないと適正に処理ができないので、TaskerのVARSタブに移動すると%BTTEZAができているので、それを選択して、最初の値1を入力しておきます。

 これをまとめると、下記のとおりとなります。
 BTOnOff (14) ←タスク名
A1: If [ %BTTEZA eq 1 ] ←もし%BTTEZAが1だったら
A2: WiFi [ Set:Off ]  ←Wifiをオフにして
A3: Bluetooth Auto Connect [ Configuration:Connect to BT母艦名 (マックアドレス) Package:de.refluxa.android.bac Name:Bluetooth Auto Connect Timeout (Seconds):0 ]  ←BTテザリング接続して
A4: Variable Set [ Name:%BTTEZA To:0 Do Maths:Off Append:Off ]  ←%BTTEZAに0をいれる
A5: Else  ←%BTTEZAが1以外の時は
A6: Bluetooth Auto Connect [ Configuration:Disonnect from BT母艦名 (マックアドレス) Package:de.refluxa.android.bac Name:Bluetooth Auto Connect Timeout (Seconds):0 ]  ←BTテザリング切断して
A7: WiFi [ Set:On ]  ←Wifiをオンにして
A8: Variable Set [ Name:%BTTEZA To:1 Do Maths:Off Append:Off ]  %BTTEZAに1をいれる
A9: End If  ←If文おしまい
A10: Zooper Widget Pro Variable [ Configuration:#TBTTEZA# = %BTTEZA Package:org.zooper.zwpro Name:Zooper Widget Pro Variable Timeout (Seconds):0 ]  ←ZooperのTBTTEZAという変数に現時点の%BTTEZAの値をいれる

 全部できたら画面にウィジェットを配置して実験してみましょう。
 無事にできているでしょうか?

 あ、そうそう、A10の項目はZooper使う時まで入力しないでください。無駄になります。

 次回も実例を用いた構文の例を紹介・・できたらいいなぁ