Android的framework层是如何对铃声的音量进行调整的

android.media.AudioManager中包含了对android.media.AudioService的跨进程AIDL调用封装。因此,调整铃声音量是通过AudioManager间接调用AudioService.adjustStreamVolume方法完成。

 

铃声音量调整分为两步:先查看模式(Ring mode)是否需要调整,如果不需要调整模式,当前模式一定是正常模式(Normal mode),那就需要调整铃声音量。

调整模式通过调用checkForRingerModeChange(oldIndex, direction);实现,调整音量通过调用streamState.adjustIndex(direction)实现。具体代码参考/framework/base/media/java/android/media/AudioService.java中的public void adjustStreamVolume(int streamType, int direction, int flags)方法。

该方法先检查模式是否需要调整,再进行音量调整。调整完毕后,做了两件事:

1、通过mVolumePanel.postVolumeChanged(streamType, flags);向用户显示改变结果。

2、通过sendVolumeUpdate(streamType);广播音量有改变的系统事件。

 

改变音量这个功能与用户界面有关的有两个部分,分别是/framework/base/core/java/android/view/VolumePanel.java和/framework/base/services/java/com/android/server/status/StatusBarPolicy.java。

 

VolumePanel主要负责向用户显示一个Toast,告诉用户目前的模式(Ring Mode)和音量大小

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值