【问题标题】:Kotlin - How to turn back volume changing?Kotlin - 如何扭转音量变化?
【发布时间】:2019-04-24 21:55:46
【问题描述】:

我正在尝试通过每次更改来使用 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() fun 或替代方法的情况下更改音量。

【问题讨论】:

    标签: android kotlin broadcastreceiver android-audiomanager


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-10
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 2020-03-17
      • 2018-06-02
      相关资源
      最近更新 更多