上篇里面提到了声音调整的两种操作,接下来就要具体分析下音量调节的大概步骤,分别涉及到两部分:
android\frameworks\base\media\java\android\media\AudioService.java
android\frameworks\base\media\java\android\media\IAudioService.aidl
其中adjustStreamVolume(int streamType, int direction, int flags)函数的声明是在AudioService.aidl中,而函数的实现是在AudioService.java中。
下面具体可以看源码:
/** @see AudioManager#adjustStreamVolume(int, int, int) */
public void adjustStreamVolume(int streamType, int direction, int flags) {
if (DEBUG_VOL) Log.d(TAG, "adjustStreamVolume() stream="+streamType+", dir="+direction);
ensureValidDirection(direction);
ensureValidStreamType(streamType);
// use stream type alias here so that streams with same alias have the same behavior,
// including with regard to silent mode control (e.g the use of STREAM_RING below and in
// checkForRingerModeChange() in place of STREAM_RING or STREAM_NOTIFICATION)
int streamTypeAlias = mStreamVolumeAlias[streamType];
VolumeStreamState streamState = mStreamStates[streamTypeAlias];
final int device = getDeviceForStream(streamTypeAlias);
// get last audible index if stream is muted, current index otherwise
final int ali