Taskerの設定をあれこれ調整して使えるようにする

Taskerを使い始めて2週間くらいです。なかなかいい感じなのでこのままLocaleはやめてTaskerにするかも。

ただ、会社ではサイレントにしているはずなのにある日突然メール通知音が鳴り響くなどいろいろ不都合が起きており、設定を工夫しています。このあたりが面白くもあり、めんどくさくもあり、Localeならもっと簡単でちゃんと動作するのにと思う点でもあります。

ログをとる

何はともあれTaskerがどういう風に動いているのか知る必要があります。そのために動作ログをみましょう。ログを記録するには、メニュー > More > Run Log と進みLog取得機能をOnにしておきます。

Locationの判定

会社の帰りに時々寄るカフェがあってそこではWi-Fiが使えるので、その場所に近づいたらWi-FiをOnにしていました。そして、カフェから出ると通常設定に戻すようにしていました。

ログを見てみると、会社にいるときにカフェに入ったり出たりしており出る時に通常設定にしてしまうため、会社にいるときにメール通知音が鳴り響くということが起きていました。

cafe判定ログ

原因はカフェの場所の判定にNetworkを使っていたためで、GPSを使わずにNetworkだけ使うとかなり広めに判定されてしまうようです。バッテリーの節約になるかと思ってGPSは使わない設定にしていたのですが、よくよく考えてみると他に一つでもGPSを使うProfileがあれば結局数分おきにGPSがOnになるのです。

そこで、カフェの場所判定にGPSも使うようにしたところ、会社にいるときにカフェに入ったり出たりすることはなくなりました。

条件判定の時間差

電車に乗っていることを判定して通知音の音量を下げ、電車から降りたら通常状態に戻して音量を上げるということをやっています。ところが、電車を降りて会社に近づいて会社用に設定されたあとに電車から降りた判定が行われ、その結果通常状態に戻ってしまっていました。

moving判定ログ

会社判定タスク
通常状態タスク

これはGPSの起動が10分おきに行われているためです。電車から降りて直後のGPS起動時には会社にLocation判定圏内に入ってしまっているのでした。GPS起動の間隔を短くすることもできますがバッテリー消費に影響しそうなので他の方法を考えました。

1.会社圏内判定時に %OFFICE という変数に 1をセットする
2.通常状態に戻すTaskは%OFFICE が1で無い時だけ実行する

このようにすれば、会社モードに設定された後で通常状態モード設定が走るのを防げます。

具体的には、会社モード設定用の新しいTaskを作り、
1.ActionとしてVariable > Variable Set を選択
2.変数名を %OFFICE とし、設定値に1とする(変数名は無ければ新しく作られます。変数名が大文字を含んでいればグローバル変数となり他のタスクから参照できます)
3.続くアクションとして、いままで使っていた会社設定Taskをそのままネストして使う。

通常状態への設定タスクの方は、先頭に Taskアクションの IF を追加し、条件として%OFFICE != 1 とします。いままで使っていた通常状態設定用のアクションリストはこのIFの下に入ります。

それから、会社を出る時のExit Taskとして %OFFICE を0にするタスクを設定します。そうしないと永久に通常状態になりません。

以上で、大きく困った点はなくなりました。もう少し使い込んで設定を改善したり、あたらしい設定を考えたりしたいと思います。