【问题标题】:Android AudioManager get wrong valuesAndroid AudioManager 得到错误的值
【发布时间】:2013-10-15 13:51:23
【问题描述】:

我遇到了上述问题。

我使用这段代码来获取铃声和通知音量

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

我使用带有 android 4.1.2 的三星 Galaxy s3 设备。

问题是:

为什么会这样。是操作系统错误还是三星错误?

我将不胜感激。

【问题讨论】:

  • 您需要提供更多详细信息。什么是“一些代码”“不同的值”
  • 您是否在整个通话期间获得较低的值?在接听电话时静音或减弱RING 流是很常见的,这样当您将手机贴在耳朵上时,您就不会听到任何剩余的铃声进入您的耳朵。应该在短时间内将其设置回其原始值,但这是特定于实现的行为(完全有可能在某些电话上结束通话之前该值不会恢复)。
  • 你可能是对的。我会调试它,我会肯定地告诉你。非常感谢。

标签: android android-audiomanager


【解决方案1】:

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

在自定义 Android 操作系统时,操作系统、制造商或运营商可以引入类似的 AudioPolicy 行为。对于这种特殊情况,我在所有 Note2(由三星添加)上都看到了它,但在 S3 上没有看到它。可以的话,请分享一下你手上的S3的运营商。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多