AudioManager.adjustStreamVolume不再在6+设备上运行

Cru*_*ceo 8 java android

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

在所有pre-6设备上,此代码按预期工作.我注意到已经弃用了setStreamVolume的AudioManager的更改,但建议的替代方法是我已经使用的...

起初我认为它可能是一个权限问题,因为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:

由于我能够在另一台设备上复制,因此打开了一个问题

Haz*_*iee 0

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

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

AudioManager audioManager =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
Run Code Online (Sandbox Code Playgroud)

然后,使用此 audioManager 将流音量设置为所需的值:

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, desiredVolume, 0);
Run Code Online (Sandbox Code Playgroud)