MediaSessionCompat 行为在 Android 12 中发生了变化,setPlaybackToRemote 停止正常工作

MediaSessionCompat behaviour changed in Android 12 and setPlaybackToRemote stopped working properly

在 Android 12 之前,我使用下面的代码来检测按下物理音量按钮以显示我的自定义 UI,但它停止在 Android 12 台设备和 onAdjustVolume 当我按下音量按钮时永远不会被调用:

        mediaSessionCompat = MediaSessionCompat(context, "My App")
    mediaSessionCompat?.isActive = true
    mediaSessionCompat?.setPlaybackState(
        PlaybackStateCompat.Builder()
        .setState(PlaybackStateCompat.STATE_PLAYING, PlaybackStateCompat.PLAYBACK_POSITION_UNKNOWN, 1f)
        .build())
    mediaSessionCompat?.setPlaybackToRemote(object :
        VolumeProviderCompat(VOLUME_CONTROL_ABSOLUTE, 7, 4) {
        override fun onAdjustVolume(direction: Int) {
            Log.v("My App", "Volume adjusted")
        }
    })

请检查此 link: https://issuetracker.google.com/issues/201546605?pli=1

根据他们的说法,Google 似乎是因为“隐私更改”而更改了它,但应该会在下一个版本中恢复(没人知道什么时候)。