Android setStreamVolume 工作不可靠
Android setStreamVolume not working reliably
自从 Android Marshmallow,AudioManager.setStreamVolume
无法可靠地工作。
Stream 没有改变它的音量。
语法如下:
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, AudioManager.FLAG_SHOW_UI);
显示的 UI 实际上显示了正确的音量设置,但它恢复为旧音量而没有更改。这曾经在 Android v21 - 6.0
之前有效
有什么想法吗?
6.0 上的 setStreamVolume()
调用时间有些奇怪。必须在流开始播放后才行,否则要等流停止播放后再开始才生效。棘手的部分是在您尝试更改音量之前确保流确实在播放。根据您的实施,这可能并不简单。如果您显示任何类型的 UI 用于播放(如搜索栏),您可以将代码添加到更新 UI 的线程。我让它从播放开始等待 250 毫秒,然后设置音量。但是如果你没有任何UI(你只是开始播放,从不跟踪进度),那么你必须任意选择等待多长时间才能改变音量。但在这种情况下,它在不同设备上的工作方式会有所不同,因为在较慢的设备上,处理流并实际开始播放它的延迟更大。
自从 Android Marshmallow,AudioManager.setStreamVolume
无法可靠地工作。
Stream 没有改变它的音量。 语法如下:
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, AudioManager.FLAG_SHOW_UI);
显示的 UI 实际上显示了正确的音量设置,但它恢复为旧音量而没有更改。这曾经在 Android v21 - 6.0
之前有效有什么想法吗?
6.0 上的 setStreamVolume()
调用时间有些奇怪。必须在流开始播放后才行,否则要等流停止播放后再开始才生效。棘手的部分是在您尝试更改音量之前确保流确实在播放。根据您的实施,这可能并不简单。如果您显示任何类型的 UI 用于播放(如搜索栏),您可以将代码添加到更新 UI 的线程。我让它从播放开始等待 250 毫秒,然后设置音量。但是如果你没有任何UI(你只是开始播放,从不跟踪进度),那么你必须任意选择等待多长时间才能改变音量。但在这种情况下,它在不同设备上的工作方式会有所不同,因为在较慢的设备上,处理流并实际开始播放它的延迟更大。