You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ExoPlayer的media2扩展时如何禁用Android 11系统媒体通知

修复方案

你可以通过以下两种不需要重构现有MediaSession相关代码的方案禁用系统媒体通知:

方案1:修改SessionServiceCallback的onGetRoot返回逻辑

androidx.media2的MediaSessionService已经预留了等效于旧版onGetRoot返回null的逻辑,你只需要给服务设置自定义的SessionServiceCallback,直接拒绝系统媒体服务的连接请求即可:

// Java实现示例
@Override
public void onCreate() {
    super.onCreate();
    setSessionServiceCallback(new SessionServiceCallback() {
        @Override
        public SessionServiceCallback.ConnectionResult onGetRoot(
                @NonNull SessionServiceCallback.ConnectionRequest request) {
            // 直接返回拒绝结果,阻止系统媒体服务连接
            return SessionServiceCallback.ConnectionResult.reject();
        }
    });
}
// Kotlin实现示例
override fun onCreate() {
    super.onCreate()
    setSessionServiceCallback(object : SessionServiceCallback() {
        override fun onGetRoot(request: ConnectionRequest): ConnectionResult {
            return ConnectionResult.reject()
        }
    })
}

方案2:临时停用MediaSession发布状态

如果你后续还要适配系统媒体通知,只是暂时隐藏,可以选择在初始化MediaSession时不调用publish()方法,或者在每次播放时调用session.setActive(false),就不会触发系统通知生成,需要恢复适配时打开对应开关即可。

注意事项

  • 上述修改不会影响原有PlayerNotificationManager自定义通知的正常功能
  • 后续要适配系统媒体通知时,只需要删除onGetRoot的拒绝逻辑、恢复Session的激活状态即可,不需要重构现有代码结构

内容的提问来源于stack exchange,提问作者Stuart Gilbert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:57:03