[[Tasker/Profile]]

#setlinebreak(on)

Taskerを導入している人はたいていこのような設定を組んでいるのではないでしょうか。
このページ以外にも参考になる事例はたくさんあると思いますが、紹介したいと思います。
Taskerを導入した人がまずチャレンジするのが、このRingModeの自動制御ではないでしょうか。
私も導入しているのですが、Actionにある"Silent Mode"は"Off"と"Vibrate"しか無くなってしまってるんですよね・・・

自宅、職場、その他の場所を区別して、通常モード(鳴動)、マナーモード(バイブ有り)、サイレントモード(バイブ無し)を切り替えます。
自宅では盛大に鳴らし、電車などの外出中はマナーモードでバイブだけ鳴らし、職場ではバイブの音も響くのでサイレントにしたいと思い、
完全なサイレントモードの作り方を探した結果を紹介します。
たまに音量を0にして実現している人が居ますが、音量値を保存しておかないと元に戻せなく問題があり、私の好みではありませんでした。


ここでは、自宅、職場、その他の場所を区別して、通常モード(鳴動)、サイレントモード(バイブ無し)、マナーモード(バイブ有り)を切り替えます。


* 仕様(概要) [#hf9b60dc]
- タイミング
-- (あらかじめ登録した)WiFiアクセスポイントを見つけたとき。
-- 上記で見つけたWiFiアクセスポイントを見失ったとき。

WiFiアクセスポイントに繋がっているか否かは問いません。

- 実施する内容
-- 対応する音量モードに設定する
-- 対応するRingModeに設定する
-- 見つけていたWifiアクセスポイントを見失ったときは、デフォルトに戻す

* 設計 [#y1ee1f58]
- 幸いなことに、自宅には自宅のWiFiが、職場には職場のWiFiがあるので、この電波の有無で判断することにします。
- 職場WiFiにはいわゆる「登録機器」しか接続できないため、トリガーはWiFiNearを使い、接続しなくても見えるだけで動くようにします。
- ターゲットWiFi-AP発見時のタスク(Enter task)
-- 適したサウンドモードに切り替える
-- 適したRingModeに切り替える
- ターゲットWiFi-APロスト時のタスク(Exit task)
-- 適したサウンドモードに切り替える
-- 適したRingModeに切り替える

* コード [#l40296b4]
** Vars [#k6746e77]
不要です。

** Profile [#qa3878d2]

1つのWiFi-AP毎に1つのProfile作成が必要です。
Default(その他の場所)は作成する必要がありませんが、自宅、職場、その他(Default)と分ける場合、
2つのProfileを作る必要があります。各ProfileにはEnterとExitの両方にTaskを設定します。

 Profile: RingMode(Home,On)
     State: WifiNear [ Name:HomeWifiApName Address:* ]
 Enter: RingModeOn
 Exit: RingModeVibe

 Profile: RingMode(Office,Silent)
     State: WifiNear [ Name:OfficeWifiApName Address:* ]
 Enter: RingModeSilent
 Exit: RingModeVibe

NameやAddressはご自身の環境に合わせて設定してください。

** Task [#ie199618]

Task: RingModeSilent
    A1: Java Function [ Return:(AudioManager)audio_manager ClassOrObject:CONTEXT Function:getSystemService{Object}(String) Param:"audio" ] 
    A2: Java Function [ ClassOrObject:audio_manager Function:setRingerMode{}(int) Param(int):0 ] 

Task: RingModeVibe
    A1: Java Function [ Return:(AudioManager)audio_manager ClassOrObject:CONTEXT Function:getSystemService{Object}(String) Param:"audio" ] 
    A2: Java Function [ ClassOrObject:audio_manager Function:setRingerMode{}(int) Param(int):1 ] 

Task: RingModeOn
    A1: Java Function [ Return:(AudioManager)audio_manager ClassOrObject:CONTEXT Function:getSystemService{Object}(String) Param:"audio" ] 
    A2: Java Function [ ClassOrObject:audio_manager Function:setRingerMode{}(int) Param(int):2 ] 

気づかれている方も多いと思いますが、A2行のParamが0,1,2となっているだけしか違いません。
Functionの設定時に改行を入れる必要があったり、色々と手順を追わないと上記の通り設定できないのですが、上記表現手法では表せていませんので、以下にスクリーンショットを載せます。

*** 手順01 [#kadde779]
RingModeSilentという名前のTaskを作成してください。
作成直後は中身には何も無いですが、ここにActionを2つ追加していきます。
画面下部の「+」ボタンをタップしてください。

*** 手順02 [#y9d524a8]
追加可能なActionの選択ダイアログが表示されますが、ここから探すのは面倒なので検索を使います。
「Java Function」が見つかったらタップします。

*** 手順03 [#d93c51c8]
以下の通り設定します。終わったら、スマホのバックキーを押して一旦前の画面に戻ります。

:Class Or Object|CONTEXT
:Function|getSystemService&br;{Object}(String) ←改行が必要です

*** 手順04 [#md2ca853]
もう一度Actionをタップし、編集画面に戻ります。
Return{Object}とParam(String)の項目が増えているはずですので、以下のように設定します。
終わったら、スマホのバックキーを押して前の画面に戻ります。

:Return {Object}|audio_manager
:Param(String)|"audio"

*** 手順05 [#p93a8db3]
2個目の新しいActionを追加します。先ほどと同じ「Java Function」を検索して追加してください。
以下の通り設定します。終わったら、スマホのバックキーを押して一旦前の画面に戻ります。

:Class Or Object|audio_manager
:Function|setRingMode&br;{}(INT) ←改行が必要です

*** 手順06 [#o76f1c66]
もう一度2つめのActionをタップし、編集画面に戻ります。
Param(INT)の項目が増えているはずですので、以下のように設定します。
終わったら、スマホのバックキーを押して前の画面に戻ります。

:Param(INT)|0  ← 0,1,2がそれぞれ、サイレント、バイブ、通常に対応しています。


*** 手順07 [#kf755b30]
以下が完成形です。
今回はParam=0の作り方をキャプチャーを使って説明しましたが、同様にParam=1,2も作成してください。

- Task名 "RingModeSilent" では setRingMode で 0 を設定します。(上記でしました)
- Task名 "RingModeVibe" では setRingMode で 1 を設定します。(このあと実施してください)
- Task名 "RingModeOn" では setRingMode で 2 を設定します。(このあと実施してください)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS