所以我遇到了一个奇怪的问题,即调用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:
由于我能够在另一台设备上复制,因此打开了一个问题
仅仅因为它已被弃用,并不意味着它应该停止工作。仍然支持向后兼容性。
确保您获得了 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)