Toggle navigation
Toggle navigation
This project
Loading...
Sign in
developOne
/
harmonyPool
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
chenjun
2024-08-27 19:20:16 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
267855c025f9ea255b40a7759df61e066fc96e47
267855c0
1 parent
509d3edc
视频被闹铃打断时暂停视频,闹铃结束视频继续
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
47 additions
and
1 deletions
sight_harmony/features/wdPlayer/src/main/ets/controller/WDPlayerController.ets
sight_harmony/features/wdPlayer/src/main/ets/controller/WDPlayerController.ets
View file @
267855c
...
...
@@ -85,6 +85,7 @@ export class WDPlayerController {
*/
private bindState() {
this.avPlayer?.on(Events.STATE_CHANGE, async (state) => {
//console.info(TAG,`cj2024 state = ${state}`)
if (this.avPlayer == null) {
return
}
...
...
@@ -179,6 +180,49 @@ export class WDPlayerController {
this.videoWidth = width
this.videoHeight = height
})
this.avPlayer?.on(Events.AUDIOINTERRUPT, async(interruptEvent: audio.InterruptEvent) => {
//https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/audio/audio-playback-concurrency.md#%E5%A4%84%E7%90%86%E9%9F%B3%E9%A2%91%E7%84%A6%E7%82%B9%E4%BA%8B%E4%BB%B6
if (interruptEvent.forceType === audio.InterruptForceType.INTERRUPT_FORCE) {
switch (interruptEvent.hintType) {
case audio.InterruptHint.INTERRUPT_HINT_RESUME:
await this.play()
break;
case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
// 此分支表示系统已将音频流暂停(临时失去焦点),为保持状态一致,应用需切换至音频暂停状态
// 临时失去焦点:待其他音频流释放音频焦点后,本音频流会收到resume对应的音频打断事件,到时可自行继续播放
case audio.InterruptHint.INTERRUPT_HINT_STOP:
// 此分支表示系统已将音频流停止(永久失去焦点),为保持状态一致,应用需切换至音频暂停状态
// 永久失去焦点:后续不会再收到任何音频打断事件,若想恢复播放,需要用户主动触发。
// this.avPlayer?.play()
await this.pause()
break;
}
}else if (interruptEvent.forceType === audio.InterruptForceType.INTERRUPT_SHARE) {
// 共享打断类型(INTERRUPT_SHARE):应用可自主选择执行相关操作或忽略音频打断事件
switch (interruptEvent.hintType) {
case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
case audio.InterruptHint.INTERRUPT_HINT_RESUME:
// 此分支表示临时失去焦点后被暂停的音频流此时可以继续播放,建议应用继续播放,切换至音频播放状态
// 若应用此时不想继续播放,可以忽略此音频打断事件,不进行处理即可
// 继续播放,此处主动执行start(),以标识符变量started记录start()的执行结果
// await audioRenderer.start().then(() => {
// started = true; // start()执行成功
// }).catch((err: BusinessError) => {
// started = false; // start()执行失败
// });
// // 若start()执行成功,则切换至音频播放状态
// if (started) {
// isPlay = true; // 此句为简化处理,代表应用切换至音频播放状态的若干操作
// } else {
// // 音频继续播放执行失败
// }
this.avPlayer?.play()
break;
default:
break;
}
}
})
}
public setXComponentController(controller: XComponentController) {
...
...
@@ -271,10 +315,12 @@ export class WDPlayerController {
// if (this.avPlayer == null) {
// return
// }
//Logger.debug(TAG, "start play")
this.avPlayer?.prepare().then(() => {
this.avPlayer?.play()
}, (err: BusinessError) => {
console.error('Failed to prepare,error message is :' + err.message)
console.error(TAG,'Failed to prepare,error message is :' + err.message)
//this.avPlayer?.stop()
})
}
...
...
Please
register
or
login
to post a comment