Tasker/Profile

Taskerを導入した人がまずチャレンジするのが、このRingModeの自動制御ではないでしょうか。
私も導入しているのですが、Actionにある"Silent Mode"は"Off"と"Vibrate"しか無くなってしまってるんですよね・・・

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

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

仕様(概要)

  • タイミング
    • (あらかじめ登録した)WiFiアクセスポイントを見つけたとき。
    • 上記で見つけたWiFiアクセスポイントを見失ったとき。

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

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

設計

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

コード

Vars

不要です。

Profile

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

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

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

手順02

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

手順03

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

Class Or Object
CONTEXT
Function
getSystemService
{Object}(String) ←改行が必要です

手順04

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

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

手順05

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

Class Or Object
audio_manager
Function
setRingMode
{}(INT) ←改行が必要です

手順06

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

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

手順07

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

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-30 (火) 11:46:10 (388d)