我有一个Android应用程序,可以播放一些内容。我正在使用以下信息初始化一个MediaSession对象:
mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
mediaSession.setPlaybackToLocal(AudioManager.STREAM_MUSIC);
PlaybackStateCompat.Builder sessionState = new PlaybackStateCompat.Builder();
sessionState.setActions(PLAYBACK_STATE_TRANSPORT_CONTROL_FLAGS);
mediaSession.setPlaybackState(sessionState.build());
mediaSession.setCallback(BuildMediaSessionCallback(context, mediaSession));
PlaybackStateCompat.Builder sessionState = new PlaybackStateCompat.Builder();
sessionState.setActions(getSessionStateActions(mediaSession));
sessionState.setState(playbackState, position, speed);
mediaSession.setPlaybackState(sessionState.build());
mediaSession.setActive(true);一切都很好。我可以从我的车载BT接收器控制播放,文件元数据被发布,但是进度条/时间被更新,就像提供的playabck速度是1.0x一样,即使我发送的值是3.0x
我能够正确更新进度条的唯一方法是调用mediaSession.setPlaybackState(...)使用新的播放位置每秒播放一次。看起来mediaSession没有考虑速度参数。有人知道怎么做吗?
谢谢
发布于 2019-04-16 17:04:57
如果在这种情况下将speed设置为3,那么看起来您的操作是正确的:
sessionState.setState(playbackState, position, speed);
问题听起来像是在UI端,在计算回放位置时没有考虑回放速度。
long timeDelta = SystemClock.elapsedRealtime() - state.getLastPositionUpdateTime();
long currentPosition = (state.getPosition() + (timeDelta * state.getPlaybackSpeed()));https://stackoverflow.com/questions/39135216
复制相似问题