Android setStreamVolume无法正常工作

时间:2015-12-11 19:26:14

标签: android android-6.0-marshmallow android-audiomanager

自Android Marshmallow以来AudioManager.setStreamVolume无法可靠运行。

Stream不会改变其音量。 这是语法:

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, AudioManager.FLAG_SHOW_UI);

显示的UI实际显示正确的音量设置,但它会恢复到旧音量而不会被更改。这曾经在Android v21 - 6.0之前工作

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

6.0上setStreamVolume()调用的时间有点奇怪。您必须在流开始播放后执行此操作,否则直到流停止播放才会生效,然后再次启动。棘手的部分是在尝试更改音量之前确保实际播放流。根据您的实施情况,这可能并不简单。如果您显示任何类型的用于回放的UI(如搜索栏),则可以将代码添加到正在更新该UI的线程中。我从播放开始等待250毫秒,然后设置音量。但是如果你没有任何UI(你只是开始播放,并且从不跟踪进度),那么你必须随意选择等待更改音量的时间。但在这种情况下,它会在不同的设备上以不同的方式工作,因为在较慢的设备上处理流并实际开始播放它会有更大的延迟。