AudioManager.adjustStreamVolume不再在6个以上的设备上运行

时间:2016-07-01 19:24:08

标签: java android

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

在所有pre-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

1 个答案:

答案 0 :(得分:0)

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

确保获得AudioManager的正确句柄:

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

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

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