何気なく使っているFramework 第4回 AudioManager
確認OSバージョン
Android OS 2.3 GingerBread
AudioManagerの役割り
AudioManagerは、音量とRingerモードの制御へのアクセスを提供します。
このクラスのインスタンスを取得するContext.getSystemServiceContext.AUDIO_SERVICE)を使用してください。
Volume変更のToast表示(非通話時)
Volumeキーイベントのハンドリング
Volumeキー(Up or Down)を押下した場合、以下の順にキーイベントを配信
- ViewRoot#mInputHandler.handleKey()
- ViewRoot#dispatchKey()
- ViewRoot#deliverKeyEvent()
- ViewRoot#deliverKeyEventToViewHierarchy()
- DecorView#dispatchKeyEvent()
- PhoneWindow#onKeyDown() でAudioManager.adjustSuggestedStreamVolume()をコール
AudioServiceへの通知とToasth表示
AudioManager → AudioService → AudioSystem へのVolume変更通知とVolumePanelの表示
- AudioManager#adjustSuggestedStreamVolume()
- AudioService#adjustSuggestedStreamVolume()
- StreamType が AudioManager.USE_DEFAULT_STREAM_TYPE の場合、AudioSystem.STREAM_RINGへ変更 (getActiveStreamType()の判定処理にて)
- AudioService#adjustStreamVolume()
- AudioHandler経由でAudioSystemへ通知
- VolumePanel#postVolumeChanged()によりToastを表示