From a4a8637cea760e54f6f86a2aec6cfc1b543a1d41 Mon Sep 17 00:00:00 2001 From: sfchu Date: Fri, 22 Aug 2025 15:23:14 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/pages/AVPlayer.ets | 20 ++++++++++-------- entry/src/main/ets/pages/VideoPlay.ets | 28 +++++++++++++++----------- entry/src/main/ets/pages/WindowPip.ets | 2 +- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/entry/src/main/ets/pages/AVPlayer.ets b/entry/src/main/ets/pages/AVPlayer.ets index 308d93d..ef1065e 100644 --- a/entry/src/main/ets/pages/AVPlayer.ets +++ b/entry/src/main/ets/pages/AVPlayer.ets @@ -145,14 +145,18 @@ export class AVPlayer { * and use the fdSrc attribute to play back. */ async avPlayerFdSrc() { - // Create an avPlayer instance object. - this.avPlayer = await media.createAVPlayer(); - // Create a callback function for state machine changes. - this.setAVPlayerCallback(); - let context = UIContext as common.UIAbilityContext; - let fileDescriptor = await context.resourceManager.getRawFd('video.mp4'); - // Assign a value to fdSrc to trigger an initialized state machine report. - this.avPlayer.fdSrc = fileDescriptor; + try { + // Create an avPlayer instance object. + this.avPlayer = await media.createAVPlayer(); + // Create a callback function for state machine changes. + this.setAVPlayerCallback(); + let context = UIContext as common.UIAbilityContext; + let fileDescriptor = await context.resourceManager.getRawFd('video.mp4'); + // Assign a value to fdSrc to trigger an initialized state machine report. + this.avPlayer.fdSrc = fileDescriptor; + } catch (e) { + Logger.error(`Failed to create AVPlayer, error message:${e.message}`); + } } async playNext() { diff --git a/entry/src/main/ets/pages/VideoPlay.ets b/entry/src/main/ets/pages/VideoPlay.ets index 93bc8bb..26bc894 100644 --- a/entry/src/main/ets/pages/VideoPlay.ets +++ b/entry/src/main/ets/pages/VideoPlay.ets @@ -85,18 +85,22 @@ export struct PlayVideo { } async createPipController() { - this.pipController = await PiPWindow.create({ - context: UIContext, - componentController: this.mXComponentController, - navigationId: this.navigationId, - templateType: PiPWindow.PiPTemplateType.VIDEO_PLAY - }); - this.pipController.on('stateChange', (state: PiPWindow.PiPState, reason: string) => { - this.onStateChange(state, reason); - }); - this.pipController.on('controlPanelActionEvent', (event: PiPWindow.PiPActionEventType, status?: number) => { - this.onActionEvent(event, status); - }); + try { + this.pipController = await PiPWindow.create({ + context: UIContext, + componentController: this.mXComponentController, + navigationId: this.navigationId, + templateType: PiPWindow.PiPTemplateType.VIDEO_PLAY + }); + this.pipController.on('stateChange', (state: PiPWindow.PiPState, reason: string) => { + this.onStateChange(state, reason); + }); + this.pipController.on('controlPanelActionEvent', (event: PiPWindow.PiPActionEventType, status?: number) => { + this.onActionEvent(event, status); + }); + } catch (e) { + Logger.error(`Failed to create pip controller. Cause:${e.code}, message:${e.message}`); + } } destroyPipController() { diff --git a/entry/src/main/ets/pages/WindowPip.ets b/entry/src/main/ets/pages/WindowPip.ets index a8dd039..038aef8 100644 --- a/entry/src/main/ets/pages/WindowPip.ets +++ b/entry/src/main/ets/pages/WindowPip.ets @@ -24,7 +24,7 @@ let UIContext = uiContext!.getHostContext()!; struct ImageWidthTitle { @State imageHeight: number = 0; @Link pageInfos: NavPathStack; - private titleResource?: Resource; + public titleResource?: Resource; build() { Column({ space: Constants.HOME_SPACE }) { -- Gitee From efe6b01ef3968e7855b3079fa7d9b0148aa1e43f Mon Sep 17 00:00:00 2001 From: sfchu Date: Fri, 22 Aug 2025 15:33:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- entry/src/main/ets/entryability/EntryAbility.ets | 4 ++-- entry/src/main/ets/pages/{WindowPip.ets => WindowPiP.ets} | 2 +- entry/src/main/resources/base/profile/main_pages.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename entry/src/main/ets/pages/{WindowPip.ets => WindowPiP.ets} (99%) diff --git a/README.md b/README.md index 9bbabe2..3307aae 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,8 @@ │ │ └──EntryAbility.ets │ ├──pages │ │ ├──AVPlayer.ets // 视频播放 -│ │ ├──Index.ets // 首页 -│ │ └──VideoPlay.ets // 视频播放页面 +│ │ ├──VideoPlay.ets // 视频播放页面 +│ │ └──WindowPiP.ets // 首页 │ └──utils │ └──Logger.ets // 日志工具类 └──entry/src/main/resources // 应用资源目录 diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index 66ae67b..636f8db 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -30,13 +30,13 @@ export default class EntryAbility extends UIAbility { // Main window is created, set main page for this ability hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); - windowStage.loadContent('pages/WindowPip', (err) => { + windowStage.loadContent('pages/WindowPiP', (err) => { if (err.code) { hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); return; } hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); - let uiContext: UIContext | undefined = windowStage.getMainWindowSync().getUIContext() + let uiContext: UIContext | undefined = windowStage.getMainWindowSync().getUIContext(); AppStorage.setOrCreate('uiContext', uiContext); }); } diff --git a/entry/src/main/ets/pages/WindowPip.ets b/entry/src/main/ets/pages/WindowPiP.ets similarity index 99% rename from entry/src/main/ets/pages/WindowPip.ets rename to entry/src/main/ets/pages/WindowPiP.ets index 038aef8..5992ea3 100644 --- a/entry/src/main/ets/pages/WindowPip.ets +++ b/entry/src/main/ets/pages/WindowPiP.ets @@ -52,7 +52,7 @@ struct ImageWidthTitle { @Entry @Component -struct WindowPip { +struct WindowPiP { @Provide('pageInfos') pageInfos: NavPathStack = new NavPathStack(); @State curState: string = ''; private navigationId: string = 'navId'; diff --git a/entry/src/main/resources/base/profile/main_pages.json b/entry/src/main/resources/base/profile/main_pages.json index 521b733..0600190 100644 --- a/entry/src/main/resources/base/profile/main_pages.json +++ b/entry/src/main/resources/base/profile/main_pages.json @@ -1,5 +1,5 @@ { "src": [ - "pages/WindowPip" + "pages/WindowPiP" ] } -- Gitee