Android AudioManager获取错误的值

时间:2013-06-14 11:59:00

标签: android android-audiomanager

我遇到了上述问题。

我使用这段代码获取响铃和通知量

AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
int currentNotif = audio.getStreamVolume(AudioManager.STREAM_NOTIFICATION);

这次跑得很好直到接到电话。 它在调用情况下返回不同的值。 (电话)。我的意思是,如果我没有打电话,这个值就是例如:

currentVolume = 7 
currentNotif  = 7

当我打电话时,这些值变为

currentVolume = 1 
currentNotif  = 7

 currentVolume = 1 
currentNotif  = 1

我使用三星galaxy s3设备和android 4.1.2。

问题是:

为什么会这样。是OS bug还是Samsung bug?

我会感激任何帮助。

1 个答案:

答案 0 :(得分:0)

这不是错误,而是设计。当STREAM_VOICE_CALL正在进行时,所有其他STREAM将以减小的音量下降。用户体验是这样的,在电话呼叫期间,所有其他未静音的音频流(音乐,铃声,通知)将以较低音量播放。

在定制Android OS时,OS,制造商或运营商可以引入这样的AudioPolicy行为。对于这个特殊情况,我在所有Note2(由三星添加)中看到了它,但是在S3上没有看到它。如果可以,请分享您拥有的S3的运营商。