用户在应用中打开视频查看页面,当用户操作开始播放视频后,发现在播控中心的状态不正确。当前视频已经为在播放状态,而播控中心上显示的播放状态为暂停状态,与实际播放状态不符。而且,用户尝试在播控中心上点击按钮后,发现无响应,播控中心按钮仍为暂停状态。
可以参见如下现象演示:

相关API简单介绍:
import { avSession } from '@kit.AVSessionKit';
// ... 在代码中检索关键字avSession.createAVSession,如果有可以查询到,则说明创建了AVSession的实例。
根据视频播放的情况,采集当前视频的播放状态(state)、播放位置(position)、当前媒体播放时长(duration)等信息,并通过setAVPlaybackState同步给播控中心。
参考如下代码示例,相关完整的介绍参见播控中心控制应用播放:
public setAvSessionPlayState(playbackState: avSession.AVPlaybackState) {
if (this.session) {
this.session.setAVPlaybackState(playbackState, (err: BusinessError) => {
if (err) {
console.error(TAG, `SetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info(TAG, 'SetAVPlaybackState successfully');
}
});
}
} private updateIsPlay(isPlay: boolean) {
// *调用AvSessionController工具类的setAvSessionPlayState,同步视频播放信息*
this.setAvSessionPlayState({
// *视频播放状态信息*
state: isPlay ? avSession.PlaybackState.PLAYBACK_STATE_PLAY : avSession.PlaybackState.PLAYBACK_STATE_PAUSE,
// *视频当前播放位置信息*
position: {
elapsedTime: this.currentTime * 1000,
updateTime: new Date().getTime()
}
});
}