Kotlin - 如何扭转音量变化?

Kotlin - How to turn back volume changing?

我正在尝试通过每次更改 AudioManager 来设置 set const volume。

这是我的代码:

private val broadcastReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            if ("android.media.VOLUME_CHANGED_ACTION" == intent.action) {
                audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0)
            }
        }
    }

问题在于它第 audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0) 行触发了 onReceive() 乐趣。

我需要在不触发 orReceive() 有趣或替代方法的情况下改变音量。

也许你可以这样处理?

private val broadcastReceiver = object : BroadcastReceiver() {
var wasVolumeChangedByApp = false
override fun onReceive(context: Context, intent: Intent) {
    if ("android.media.VOLUME_CHANGED_ACTION" == intent.action && !wasVolumeChangedByApp) {
        audioManager.setStreamVolume(AudioManager.STREAM_RING, constDeviceVolume, 0)
        wasVolumeChangedByApp = true
        return
    }
    wasVolumeChangedByApp = false
}

设置布尔标志(表示您的应用程序修改了音量)后,将简单地忽略 onReceive() 的处理。然后重置此标志,以便之后的 onReceive 调用将按需要处理。