[音量設定アプリ]第5回 ハードウェアキー(音量ボタン)が押されたときの処理を行う
前回までに横向きに対応したアプリを作成しました。
[音量設定アプリ]第4回 マナーモードの設定をする
今回は、音量に関連するマナーモードの設定をします。
前回までに作成したアプリで音量とマナーモードの設定はできるようになりました。
しかし、おかしいなぁと思う点があります。
本体(HT-03A)の左横にある音量ボタン(ハードウェアキー)で音量を変更しても、画面の表示は前のままになっています。
実際の音量と表示が異なってしまっています。これを何とかしたい・・・ということで今回の記事で対応します。
※実際の音量と表示が異なるという状態は音量ボタンだけが原因ではありませんが、今回は音量ボタンだけに対応します。
処理としては非常に簡単です。ボタンが押されたというイベントを拾って、画面表示の更新処理を追加するのみになります。
Activity クラスの onKeyUp(onKeyDown)をオーバーライドします。
このときの引数に keyCode がありますので、この値を見て押されたのが音量ボタンであれば画面表示を更新します。
<参考>
ボタン名 keyCode
音量UP KeyEvent.KEYCODE_VOLUME_UP
音量Down KeyEvent.KEYCODE_VOLUME_DOWN
下記ボタンについては特別な処理は行いません。
Back KeyEvent.KEYCODE_BACK
Call KeyEvent.KEYCODE_CALL
Center KeyEvent.KEYCODE_DPAD_CENTER
Left KeyEvent.KEYCODE_DPAD_LEFT
Right KeyEvent.KEYCODE_DPAD_RIGHT
Up KeyEvent.KEYCODE_DPAD_UP
Down KeyEvent.KEYCODE_DPAD_DOWN
下記ボタンについてはonKeyUp(onKeyDown)で処理を行うべきではないでしょう
HOME
menu 82
End Call
Serch 84
1.音量キーが押されたら画面を更新する処理を追加します
2.音量が変更された場合にマナーモードの設定を変更する
ハードウェアキーとは関係ありませんが・・・・
マナーモードをサイレント(バイブ)に設定すると、関連する音量は0になります。
これについては画面の表示は問題ありません。
画面上部にある通知エリアの表示もマナーモードに設定されている表示になります。
マナーモードをサイレント(バイブ)にしているときに、SeekBar で音量を 1 以上に変更することが可能です。
SeekBar で音量を 1 以上に設定すると、当然ですが音が出るようになります。
ここで画面表示に違和感を感じました。
音が出るのに、表示がマナーモード(サイレント、バイブ)になっています。
通知エリアの表示もマナーモードになっています。
マナーモード(サイレント、バイブ)に設定されているのであれば、音量は 0 であるべきでしょう。
音量を 1 以上に設定するのであれば、マナーモードを解除(標準)にするべきです。
ということで、マナーモードに関連する音量(着信音量、通知音量、システム音量)が1以上に変更された場合はマナーモードを解除します。表現を変えると、3つの音量のうちどれかが変更されたらマナーモードを標準に変更します。
onProgressChanged 内の音量設定をしている次の行に下記を追加します。
次回はデザインと英語表記に対応し、音量設定アプリシリーズは終了になります。
・[音量設定アプリ]第1回 着信音量を設定する方法
・[音量設定アプリ]第2回 着信、通知、アラーム、メディア、通話音量を設定
・[音量設定アプリ]第3回 スクロールビュー(ScrollView)に対応する
・[音量設定アプリ]第4回 マナーモードの設定をする
・[音量設定アプリ]第5回 ハードウェアキー(音量ボタン)が押されたときの処理を行う



