何気なく使っている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を表示