【问题标题】:AudioManager.adjustStreamVolume no longer functioning on 6+ devicesAudioManager.adjustStreamVolume 不再在 6+ 设备上运行
【发布时间】:2016-07-01 19:24:07
【问题描述】:

所以我遇到了一个奇怪的问题,调用 AudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI) 不再触发我刚刚更新到 6.0 的设备上的系统音量更改。

在所有 6 之前的设备上,此代码按预期工作。我确实注意到了对 AudioManager 的更改,其中 setStreamVolume 已被弃用,但建议的替代方案是我已经在使用的...

起初我认为这可能是权限问题,因为MODIFY_AUDIO_SETTINGS 被列为危险权限,但我检查了ContextCompat.checkSelfPermission(this, Manifest.Permission.MODIFY_AUDIO_SETTINGS) == PackageManager.PERMISSION_GRANTED(权限设置页面中也没有与音频相关的权限,所以我'我假设情况并非如此)。

我尝试了另一种推荐的方法adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI),但也没有产生任何结果。

所以,澄清一下:

调用 adjustStreamVolume/adjustVolume 时没有任何视觉上的变化,AudioManager.getStreamVolume(AudioManager.STREAM_MUSIC) 返回不变的值,就好像它从未被调用过一样。

如果有人对此有任何想法,我现在真的很想听听。

编辑:

自从发布此内容后,我已转而使用 setStreamVolume(AudioManager.STREAM_MUSIC, value, AudioManager.FLAG_SHOW_UI),尽管文档说它不再应该这样做,但它仍然有效。

希望对此有一些想法......

编辑 2:

打开an issue,因为我可以在另一台设备上复制

【问题讨论】:

标签: java android


【解决方案1】:

仅仅因为它已被弃用,并不意味着它应该停止工作。它仍然支持向后兼容。

确保您获得了正确的 AudioManager 句柄:

AudioManager audioManager =(AudioManager)getSystemService(Context.AUDIO_SERVICE);

然后,使用此 audioManager 将 Stream Volume 设置为所需的值:

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, desiredVolume, 0);

【讨论】:

  • 嗨哈泽姆,感谢您的回答。不幸的是,文档说它不再受支持。不仅已弃用,而且显然不是这种情况(如果您查看我的编辑) setStreamVolume 确实有效。但是,问题是为什么 adjustStreamVolume 不这样做,因为这是文档推荐的一种,但目前在我尝试过的 6 多种设备上也无法使用
  • 嗯,有时会发生不再支持的功能被时间破坏的情况,因为它们不再存在于他们的测试计划中。所以,如果“调整”不起作用而“设置”起作用,那么你就会被“设置”困住......并祈祷“设置”在未来仍然有效:)
  • 再次感谢您的回复,但这并不能真正回答问题,因为这要么是平台中的错误,要么是文档中的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2012-01-05
  • 2014-12-24
  • 2016-11-14
  • 1970-01-01
相关资源
最近更新 更多