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

非活跃Media Session无法重启问题求助

重启非活跃Media Session失败问题

我已遵循官方文档中关于重启非活跃Media Session的指引,包括在AndroidManifest中配置正确条目,但问题仍未解决。

从Logcat中可看到应用已连接到MediaBrowserService,但后续无任何动作:

2023-02-14 13:23:20.187 11970-11970 MediaBrowserCompat                       D  Connecting to a MediaBrowserService.
2023-02-14 13:23:20.216 11970-11970 ExoPlayerImpl                            I  Init 690e213 [AndroidXMedia3/1.0.0-beta03] [redfin, Pixel 5, Google, 33]
2023-02-14 13:23:20.253 11970-11970 ExoPlayerImpl                            I  Release 690e213 [AndroidXMedia3/1.0.0-beta03] [redfin, Pixel 5, Google, 33] [media3.common, media3.exoplayer, media3.decoder, media3.datasource, media3.extractor]
2023-02-14 13:23:20.760 11970-11970 MediaBrowserCompat                       D  Connecting to a MediaBrowserService.
2023-02-14 13:23:20.783 11970-11970 ExoPlayerImpl                            I  Init 7df60bd [AndroidXMedia3/1.0.0-beta03] [redfin, Pixel 5, Google, 33]
2023-02-14 13:23:20.819 11970-11970 ExoPlayerImpl                            I  Release 7df60bd [AndroidXMedia3/1.0.0-beta03] [redfin, Pixel 5, Google, 33] [media3.common, media3.exoplayer, media3.decoder, media3.datasource, media3.extractor]
2023-02-14 13:23:26.319 11970-11970 MediaBrowserCompat                       D  Connecting to a MediaBrowserService.
2023-02-14 13:23:26.345 11970-11970 ExoPlayerImpl                            I  Init 540e5f3 [AndroidXMedia3/1.0.0-beta03] [redfin, Pixel 5, Google, 33]
2023-02-14 13:23:26.388 11970-11970 ExoPlayerImpl                            I  Release 540e5f3 [AndroidXMedia3/1.0.0-beta03] [redfin, Pixel 5, Google, 33] [media3.common, media3.exoplayer, media3.decoder, media3.datasource, media3.extractor]
2023-02-14 13:23:27.001 11970-11970 MediaBrowserCompat                       D  Connecting to a MediaBrowserService.
2023-02-14 13:23:27.025 11970-11970 ExoPlayerImpl                            I  Init f1d97e0 [AndroidXMedia3/1.0.0-beta03] [redfin, Pixel 5, Google, 33]

我了解ExoPlayer有MediaSessionConnector,但官方文档未提及需使用它,且缺少相关实现示例。

以下是我的MediaBrowserService精简代码:

public class MediaPlayerService extends MediaBrowserServiceCompat {
    private ExoPlayer mPlayer;
    private MediaSessionCompat mMediaSessionCompat;
    
    @Override
    public void onCreate() {
        super.onCreate();

        mMediaSessionCompat = new MediaSessionCompat(this, MediaPlayerService.class.getSimpleName());
        mMediaSessionCompat.setCallback(mMediaSessionCallback);
        mMediaSessionCompat.setActive(true);

        mPlaybackBuilder = new PlaybackStateCompat.Builder();
        mPlaybackBuilder.setActions(
                        PlaybackStateCompat.ACTION_PLAY_PAUSE |
                                PlaybackStateCompat.ACTION_PLAY |
                                PlaybackStateCompat.ACTION_PAUSE |
                                PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS |
                                PlaybackStateCompat.ACTION_SKIP_TO_NEXT);
                                
        setSessionToken(mMediaSessionCompat.getSessionToken());

        mPlaybackAttributes = new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_MEDIA)
                .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
                .build();

        mPlayer = new ExoPlayer.Builder(mContext).build();
        mPlayer.addListener(new PlayerEventListener());
    }
    
    private final MediaSessionCompat.Callback mMediaSessionCallback = new MediaSessionCompat.Callback() {
    
        @Override
        public void onStop() {
            super.onStop();

            StopAudio();
        }

        @Override
        public void onPlay() {
            super.onPlay();

            PlayAudio();
        }

        @Override
        public void onPause() {
            super.onPause();

            PauseAudio();
        }
    };

    
     private class PlayerEventListener implements Player.Listener {

        @Override
        public void onPlaybackStateChanged(int state) {
            if (state == Player.STATE_BUFFERING) {
  
            } else if (state == Player.STATE_READY) {


            } else if (state == Player.STATE_ENDED)
        }
    }
    
    @Override
    public void onDestroy() {
        super.onDestroy();

        mMediaSessionCompat.setMetadata(null);
        mMediaSessionCompat.setActive(false);
        mMediaSessionCompat.release();
        
        mPlayer.release();
    }
        
}

内容的提问来源于stack exchange,提问作者Kris B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:05:23