在Android中,Stream的类型有以下11种:
public static final int STREAM_VOICE_CALL = 0;
public static final int STREAM_SYSTEM = 1;
public static final int STREAM_RING = 2;
public static final int STREAM_MUSIC = 3;
public static final int STREAM_ALARM = 4;
public static final int STREAM_NOTIFICATION = 5;
public static final int STREAM_BLUETOOTH_SCO = 6;
public static final int STREAM_SYSTEM_ENFORCED = 7;
public static final int STREAM_DTMF = 8;
public static final int STREAM_TTS = 9;
public static final int STREAM_ACCESSIBILITY = 10;
每一种StreamType的Volume是可以单独控制的,但实际上,有的StreamType的Volume会遵从另一个StreamType的Volume。在AudioService中,用一个静态数组来表示这种关系,并且Phone(手机)的是这样的。
private final int[] STREAM_VOLUME_ALIAS_VOICE = new int[] {
AudioSystem.STREAM_VOICE_CALL, // STREAM_VOICE_CALL
AudioSystem.STREAM_RING, // STREAM_SYSTEM
AudioSystem.STREAM_RING, // STREAM_RING

本文探讨了Android系统中AudioService如何处理StreamVolume,尤其是Notification和Ring的关系。在AudioService中,Notification、SYSTEM等StreamType的音量原本遵从Ring,当调整其中一个时,其他也会受影响。为了实现分离,需要修改使Notification音量不再受Ring控制。同时,Volume还受到RingerMode影响,不同模式下会影响特定Stream的静音状态,这一行为由mRingerModeAffectedStreams变量控制。
最低0.47元/天 解锁文章
1703

被折叠的 条评论
为什么被折叠?



