[音量設定アプリ]第5回 ハードウェアキー(音量ボタン)が押されたときの処理を行う

By 松田幸一
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

前回までに横向きに対応したアプリを作成しました。
[音量設定アプリ]第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回 ハードウェアキー(音量ボタン)が押されたときの処理を行う

関連する投稿