またまた Androidの新アプリをリリース「Tap to silent」

  • 投稿:
  • 更新:2019年11月 8日
  • by
  • in

taptosilent_promotion_1024x500.png

同等の処理は Tasker だけでも出来るのですが、設定が面倒そうなので消音の部分だけアプリで作ってみました。
単体で起動すると消音して、アプリをタップして終了させると元のサウンド設定に戻ります。



Androidの音量設定は複数ありデバイスの設定から個別に設定できるのですが、このアプリでは以下の音を消音します。

  1. ダイアルトーン
  2. 通知音量
  3. アラーム音量
  4. 音楽再生音量
  5. 着信音量
  6. システムメッセージ音量

この中で 2,5,6 は共通のボリューム設定となるようです。(もしかしたらデバイスにより違うかも知れません)

このアプリは外部プログラムからからコントロールできるように起動時のパラメタをプログラムから設定できるようにしています。
また、Tasker等 Intent を発行できる自動処理アプリから連動することもできます。元はと言えば、これがやりたくて作ったアプリですね。
Tasker と連携したい場合はこちらの記事を参照して下さい。
以下が、アプリ連動時の設定値です。

Package name: com.jjworkshop.android.taptosilent
Class Name: com.jjworkshop.android.taptosilent.MainActivity
Extra: name="silent" value="on" か "off" か "on_except_music"

Extraの設定は “on” で消音モードにします。”off” で消音を解除し元の設定にします。”on_except_music” は音楽再生や動画再生などのメディア再生音以外を消音にします。
外部起動した場合は、アプリは処理後に自動終了しタスクリストに残りません。

プログラム(Kotlin)から処理する場合は以下のようにします。

val packageName = "com.jjworkshop.android.taptosilent"
val className = "com.jjworkshop.android.taptosilent.MainActivity"
val intent = intent.setClassName(packageName, className)
intent.putExtra("silent", "on")  // 消音する
startActivity(intent)

外部起動でもアプリをタップして起動した場合でも、復元する音量設定は消音処理する時点での音量を保存して復元時に利用します。
なので、アプリで消音後に音量の設定をデバイスから変更しても、このアプリで消音モードを解除すると保存時の音量設定に戻ります。
また、消音したままでアプリを強制終了するとデバイスは消音されたままとなります。これを解除するには一度アプリを起動してから正しく終了すると音量を復元することができます。

メモ:
当初、パラメタ無しでアプリがタスクから消えたら復元とかできると便利だなぁーと、色々とコードを試してみたのですが、アプリのライフサイクルで、アプリ終了直前に処理を入れることが出来るのは APIレベル29(今の最新のAndroid-Q)だけでした。
他は終了直前を通知を受けることはできても、数行のコードでも途中でシステムからパージされるようで、思うように実行できませんでした。Serviceとか常駐させればなんとかなったのかも知れませんが、まぁそこまでやるアプリでもないので(笑)