Android MediaControllerCompat.onAudioInfoChanged上的回调永远不会被调用

Android MediaControllerCompat.onAudioInfoChanged上的回调永远不会被调用,android,audio,Android,Audio,我正在使用自己的音量控制器: xenoVolumeProvider = new VolumeProviderCompat(VolumeProviderCompat.VOLUME_CONTROL_RELATIVE, maxXenoVolume, XenoAmp.getAndSetPref("xenoVol", maxXenoVolume / 2)) { @Override public void onAdjustVolume(int

我正在使用自己的音量控制器:

        xenoVolumeProvider = new VolumeProviderCompat(VolumeProviderCompat.VOLUME_CONTROL_RELATIVE, maxXenoVolume, XenoAmp.getAndSetPref("xenoVol", maxXenoVolume / 2)) {
            @Override
            public void onAdjustVolume(int direction) {
                super.onAdjustVolume(direction);
                actionSetVolumeByTick(direction);
                //Logger.d("Wart vol=" + mSession.getController().getPlaybackInfo().getCurrentVolume());
            }
        };
        mSession.setPlaybackToRemote(xenoVolumeProvider);
除了安卓4上的一个导致FC的bug之外,它的工作方式出乎意料,但毫不奇怪MediaControllerCompat.Callback的onAudioInfoChanged从未被调用,尽管所有其他回调都会被调用

由于谷歌的MediaController/MediaSession文档不存在并不令人惊讶,也许我遗漏了一些东西。也许我应该在每次音量变化时给自己打电话,但怎么做呢

有一个回调,它可以工作:

        xenoVolumeProvider.setCallback(new VolumeProviderCompat.Callback() {
            @Override
            public void onVolumeChanged(VolumeProviderCompat volumeProvider) {
                // maybe I can call onAudioInfoChanged from here?
            }
        });
但是,我该如何调用MediaControllerCompat。回调是从那里更改的?有什么想法吗?

您的onAdjustVolume是一个已提交音量调整请求的指示器-要获取回调,请确保从onAdjustVolume方法中调用。根据Javadoc,该方法:

设置当前卷并通知系统该卷已更改


注意:根据上的文档,这是在支持库内部使用的-您不应该设置自己的回调,因为它将覆盖在调用setPlaybackToRemote时设置的MediaSessionCompat回调,导致回调不会传播到任何控制器。

好吧,怀疑它是这样工作的,setCurrentVolume由actionSetVolumeByTickdirection调用,控制器的音量设置正确,并且当我将标志设置为显示GUI时,它会在屏幕上弹出,但我只想收到音量已更改的通知,因为我使用自己的指示器。OnAudioInfoChanged从未被调用。那么我应该使用其他回调吗?只是确认一下,您使用的是哪个版本的支持库?只要你不使用setCallback,MediaSessionCompat的默认行为应该是将它转发到你的MediaControllerI我真的负担不起除了顶级版本之外的任何版本猜猜为什么?。。。23.0.1,当然。我仅在m\MediaController和VolumeProviderCompat上设置回调。哪一个回调是否定的?VolumeProviderCompat.setCallback是您不应该使用的回调。我已删除此回调aaaaa并。。。什么都没有!我的MediaController的OnAudioFoChanged仍然没有被调用-之前没有回调,我后来添加了它,我想也许我可以从那里调用OnAudioFoChanged。。。所以你还有什么想法吗?还是调用OnAudioFoChanged的一段工作代码?