Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
Android的原始设计会将若干stream type最终归成一类,比如STREAM_DTMF、 STREAM_MUSIC、STREAM_TTS都属于STREAM_MUSIC,STREAM_SYSTEM、STREAM_SYSTEM_ENFORCED、STREAM_RING最终归类成STREAM_RING,也就说细分只是针对app,归类会根据情景模式划分,因此针对不同的platform,比如用的是TV、BOX,那么对应的划分也是不同的。这部分在AudioService.java中体现,分别有三个alias,
STREAM_VOLUME_ALIAS_VOICE, STREAM_VOLUME_ALIAS_TELEVISION以及STREAM_VOLUME_ALIAS_DEFAULT。
当前需求是要将dtmf独立分来出来作为单独一个stream通道,目标是不受其他stream影响,下面是代码改动,其他stream要分离出来也可以用同样的方法。
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -330,7 +330,8 @@ public class AudioService extends IAudioService.Stub {
AudioSystem.STREAM_RING, // STREAM_NOTIFICATION
AudioSystem.STREAM_BLUETOOTH_SCO, // STREAM_BLUETOOTH_SCO
AudioSystem.STREAM_RING, // STREAM_SYSTEM_ENFORCED
- AudioSystem.STREAM_RING, // STREAM_DTMF
+ //Kris
+ AudioSystem.STREAM_DTMF, // STREAM_DTMF
AudioSystem.STREAM_MUSIC // STREAM_TTS
};
private int[] mStreamVolumeAlias;
@@ -1350,7 +1351,10 @@ public class AudioService extends IAudioService.Stub {