2015/01/06

Taskerを使おう(7) 場所によって明るさを切り替えよう

 Androidの明るさを自動調整にしている人が多いと思いますが、寝室で寝る前に軽く読書したりするときは輝度が最低になっていてもまだ明るいです。
 固定にしている人は明るいところ、暗いところ、その都度調整が必要となって大変です。
 これをTaskerで自動化してみます。

 条件としては、画面がついた時に周辺の明るさがどうなっているかで判別します。
 もちろんAndroidに明るさのセンサーがないと発動しませんが、最近はついてない機種なんてないと思いますので、これで行ってみましょう。

 ただ、画面が点灯した時に各種センサーが情報を取得するまでタイムラグがあるので、Wait処理を挟む必要があります。

 また、今回は機種の限界以上に輝度を下げるので、Tasker連携アプリのScreenFilterを併用します。

 条件を作成する前に、照度計アプリを入れて自分の生活する中でいろいろな場所で明るさを先に測りました。

 その結果、普段は明るさのレベルが50%で大丈夫でした。
 寝室にいるときは照度が1.8以下位となりました。
 ついでに明るい場所で使うことも考えて照度が300以上の条件も考えました。

 これを元にタスクを作成していきます。

Profile: 画面on (13) ←プロファイル名です
Event: Display On ←画面が点灯した時という条件です

Enter: 明るさ調整 (34) ←タスク名です
A1: Wait [ MS:0 Seconds:1 Minutes:0 Hours:0 Days:0 ] ←センサーが取得する時間として1秒Waitをかけています 
A2: If [ %LIGHT < 1.8 ] ←照度センサーが1.8以下の時
A3: Screen Filter [ Configuration:20.2% Soft-keys On Package:com.haxor Name:Screen Filter Timeout (Seconds):0 ]  ←Screen Filterを使って現在の輝度の20%になるようにしています
A4: Else If [ %LIGHT < 300 ] ←A2以外で照度センサーが300以下の時
A5: Display Brightness [ Level:50 Disable Safeguard:Off Ignore Current Level:Off Immediate Effect:Off ]  ←画面の輝度レベルを50にします
A6: Screen Filter [ Configuration:100.0% Soft-keys On Package:com.haxor Name:Screen Filter Timeout (Seconds):0 ]  ←Screen Filterの値を100%にします(Screen Filterが停止します)
A7: Else  ←A2、A4以外の時(照度センサーが300以上の時)
A8: Display Brightness [ Level:70 Disable Safeguard:Off Ignore Current Level:Off Immediate Effect:Off ]  ←画面の輝度レベルを70にします
A9: End If  ←条件式を終了します。
A10: Zooper Widget Pro Variable [ Configuration:#Tlight# = %LIGHT Package:org.zooper.zwpro Name:Zooper Widget Pro Variable Timeout (Seconds):0 ]  ←Zooper Widgetに照度センサーの値を渡しています
A11: Flash [ Text:%BRIGHT Long:Off ]  ←画面の輝度をトーストします

 A10については、Zooper Widgetに情報を渡して表示させておくことで条件式の見直しをする時の参考にするために使っています。
 これまでも何回か手直ししました。特に寝室で画面がついた時に顔や布団に光が反射したのを照度センサーが拾うため、たまに高い数値が出たりします。

 まだまだ詰めていく必要がありますが、とりあえずこれで現在は満足に運用できています。
 ただメモリが逼迫していて動作が重い時はセンサーの取得がうまく行かなかったりするので、その時はあきらめて手動にしています。