Kotlin - 如何扭转音量变化?

问题描述 投票:0回答:1

我试图通过AudioManager设置const 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()乐趣或替代方法的情况下改变音量。

android kotlin broadcastreceiver android-audiomanager
1个回答
1
投票

也许你可以像这样处理它?

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调用将根据需要进行处理。

© www.soinside.com 2019 - 2024. All rights reserved.