From 47332aa400cb78de7001b4f017161354fc432fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=8B=E8=83=BD=5F=E5=BC=A0=E5=BE=B7=E7=9B=9B?= Date: Wed, 27 Aug 2025 18:04:19 +0800 Subject: [PATCH 01/11] =?UTF-8?q?sample=E5=A2=9E=E5=8A=A0=E9=80=82?= =?UTF-8?q?=E9=85=8D=E6=99=BA=E8=83=BD=E7=A9=BF=E6=88=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 21 +-- README.md | 23 +-- build-profile.json5 | 17 ++- .../src/main/ets/utils/BackgroundUtil.ets | 2 +- .../src/main/ets/utils/BreakpointSystem.ets | 6 +- .../src/main/ets/utils/MediaService.ets | 38 +++-- .../src/main/ets/utils/PreferencesUtil.ets | 16 +-- .../src/main/ets/utils/SongItemBuilder.ets | 6 +- .../src/main/ets/viewmodel/MusicData.ets | 2 +- features/live/src/main/ets/view/LiveList.ets | 2 +- .../src/main/ets/view/MusicCommentPage.ets | 4 +- features/musicList/Index.ets | 1 + .../main/ets/components/AlbumComponent.ets | 6 +- .../ets/components/ControlAreaComponent.ets | 2 +- .../main/ets/components/LyricsComponent.ets | 2 +- .../ets/components/MusicControlComponent.ets | 12 +- .../ets/components/MusicInfoComponent.ets | 4 +- .../src/main/ets/components/PlayList.ets | 10 +- .../src/main/ets/components/Player.ets | 6 +- .../musicList/src/main/ets/lyric/LrcUtils.ets | 4 +- .../musicList/src/main/ets/lyric/LrcView.ets | 2 +- .../src/main/ets/view/MusicListPage.ets | 2 +- .../src/main/ets/viewmodel/SongDataSource.ets | 8 +- .../src/main/ets/viewmodel/SongListData.ets | 6 +- .../main/ets/entryability/EntryAbility.ets | 6 +- products/watch/build-profile.json5 | 28 ++++ products/watch/hvigorfile.ts | 6 + products/watch/obfuscation-rules.txt | 23 +++ products/watch/oh-package.json5 | 17 +++ .../src/main/ets/constants/StyleConstants.ets | 32 +++++ products/watch/src/main/ets/pages/Index.ets | 84 +++++++++++ products/watch/src/main/ets/view/Home.ets | 110 ++++++++++++++ products/watch/src/main/ets/view/PlayList.ets | 124 ++++++++++++++++ products/watch/src/main/ets/view/SongList.ets | 87 +++++++++++ products/watch/src/main/ets/view/SongPage.ets | 136 ++++++++++++++++++ .../main/ets/view/VolumeSliderComponent.ets | 103 +++++++++++++ .../main/ets/watchability/WatchAbility.ets | 45 ++++++ .../watchbackupability/WatchBackupAbility.ets | 16 +++ products/watch/src/main/module.json5 | 51 +++++++ .../main/resources/base/element/color.json | 36 +++++ .../main/resources/base/element/float.json | 84 +++++++++++ .../main/resources/base/element/string.json | 48 +++++++ .../resources/base/media/chevron_right.svg | 2 + .../main/resources/base/media/download.svg | 10 ++ .../main/resources/base/media/full_screen.svg | 2 + .../base/media/hottest_playlists.svg | 2 + .../main/resources/base/media/is_playing.svg | 2 + .../resources/base/media/layered_image.json | 7 + .../main/resources/base/media/my_favorite.svg | 2 + .../main/resources/base/media/next_btn.svg | 2 + .../main/resources/base/media/pause_btn.svg | 2 + .../main/resources/base/media/play_btn.svg | 2 + .../resources/base/media/play_btn_fill.svg | 2 + .../resources/base/media/playlist_bg1.png | Bin 0 -> 594747 bytes .../resources/base/media/playlist_bg2.png | Bin 0 -> 695442 bytes .../resources/base/media/previous_btn.svg | 2 + .../src/main/resources/base/media/repeat.svg | 2 + .../src/main/resources/base/media/setting.svg | 2 + .../resources/base/media/speaker_fill.svg | 2 + .../main/resources/base/media/startIcon.png | Bin 0 -> 20093 bytes .../resources/base/profile/backup_config.json | 3 + .../resources/base/profile/main_pages.json | 5 + .../resources/base/profile/router_map.json | 19 +++ .../main/resources/en_US/element/string.json | 48 +++++++ .../main/resources/zh_CN/element/string.json | 48 +++++++ screenshots/device/wearable.png | Bin 0 -> 167201 bytes 66 files changed, 1319 insertions(+), 85 deletions(-) create mode 100644 products/watch/build-profile.json5 create mode 100644 products/watch/hvigorfile.ts create mode 100644 products/watch/obfuscation-rules.txt create mode 100644 products/watch/oh-package.json5 create mode 100644 products/watch/src/main/ets/constants/StyleConstants.ets create mode 100644 products/watch/src/main/ets/pages/Index.ets create mode 100644 products/watch/src/main/ets/view/Home.ets create mode 100644 products/watch/src/main/ets/view/PlayList.ets create mode 100644 products/watch/src/main/ets/view/SongList.ets create mode 100644 products/watch/src/main/ets/view/SongPage.ets create mode 100644 products/watch/src/main/ets/view/VolumeSliderComponent.ets create mode 100644 products/watch/src/main/ets/watchability/WatchAbility.ets create mode 100644 products/watch/src/main/ets/watchbackupability/WatchBackupAbility.ets create mode 100644 products/watch/src/main/module.json5 create mode 100644 products/watch/src/main/resources/base/element/color.json create mode 100644 products/watch/src/main/resources/base/element/float.json create mode 100644 products/watch/src/main/resources/base/element/string.json create mode 100644 products/watch/src/main/resources/base/media/chevron_right.svg create mode 100644 products/watch/src/main/resources/base/media/download.svg create mode 100644 products/watch/src/main/resources/base/media/full_screen.svg create mode 100644 products/watch/src/main/resources/base/media/hottest_playlists.svg create mode 100644 products/watch/src/main/resources/base/media/is_playing.svg create mode 100644 products/watch/src/main/resources/base/media/layered_image.json create mode 100644 products/watch/src/main/resources/base/media/my_favorite.svg create mode 100644 products/watch/src/main/resources/base/media/next_btn.svg create mode 100644 products/watch/src/main/resources/base/media/pause_btn.svg create mode 100644 products/watch/src/main/resources/base/media/play_btn.svg create mode 100644 products/watch/src/main/resources/base/media/play_btn_fill.svg create mode 100644 products/watch/src/main/resources/base/media/playlist_bg1.png create mode 100644 products/watch/src/main/resources/base/media/playlist_bg2.png create mode 100644 products/watch/src/main/resources/base/media/previous_btn.svg create mode 100644 products/watch/src/main/resources/base/media/repeat.svg create mode 100644 products/watch/src/main/resources/base/media/setting.svg create mode 100644 products/watch/src/main/resources/base/media/speaker_fill.svg create mode 100644 products/watch/src/main/resources/base/media/startIcon.png create mode 100644 products/watch/src/main/resources/base/profile/backup_config.json create mode 100644 products/watch/src/main/resources/base/profile/main_pages.json create mode 100644 products/watch/src/main/resources/base/profile/router_map.json create mode 100644 products/watch/src/main/resources/en_US/element/string.json create mode 100644 products/watch/src/main/resources/zh_CN/element/string.json create mode 100644 screenshots/device/wearable.png diff --git a/README.en.md b/README.en.md index 56685ea..3e1eb6e 100644 --- a/README.en.md +++ b/README.en.md @@ -1,6 +1,6 @@ # Music Album -### Introduction +## Project Introduction This codelab implements music album pages based on the adaptive layout and responsive layout, achieving one-time development for multi-device deployment. @@ -16,7 +16,12 @@ The figure shows the effect on the tablet. ![](screenshots/device/pad.en.png) -### How to Use +The figure shows the effect on the wearable. + + + + +## How to Use 1. Install and open an app on a mobile phone, foldable phone, or tablet. The responsive layout and adaptive layout are used to display different effects on the app pages over different devices. 2. Touch the Play/Pause, Previous, or Next icon on the screen to control music playback. @@ -24,13 +29,13 @@ The figure shows the effect on the tablet. 4. Tap the comment button on the page to go to the corresponding comment page. 5. Other buttons do not have actual tap events or functions. -### Permissions +## Permissions N/A -### Constraints +## Constraints -1. The sample is only supported on Huawei phones with standard systems. -2. HarmonyOS: HarmonyOS 5.0.0 Release or later. -3. DevEco Studio: DevEco Studio 5.0.0 Release or later. -4. HarmonyOS SDK: HarmonyOS 5.0.0 Release SDK or later. +1. The sample is only supported on standard systems and is compatible with the following devices: Huawei smartphones, tablets, PCs/2in1s, and smart wearables. +2. HarmonyOS: HarmonyOS 5.1.0 Release or later. +3. DevEco Studio: DevEco Studio 5.1.0 Release or later. +4. HarmonyOS SDK: HarmonyOS 5.1.0 Release SDK or later. diff --git a/README.md b/README.md index 17c075c..c8fa3ff 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 多设备音乐界面 -### 简介 +## 项目简介 基于自适应和响应式布局,实现一次开发、多端部署音乐专辑。 @@ -16,21 +16,26 @@ ![](screenshots/device/pad.png) -### 使用说明 +智能穿戴效果图如下: -1. 分别在手机、折叠屏、平板安装并打开应用,不同设备的应用页面通过响应式布局和自适应布局呈现不同的效果。 + + + +## 使用说明 + +1. 分别在手机、折叠屏、平板、智能穿戴安装并打开应用,不同设备的应用页面通过响应式布局和自适应布局呈现不同的效果。 2. 点击界面上播放/暂停、上一首、下一首图标控制音乐播放功能。 3. 点击界面上播放控制区空白处或列表歌曲跳转到播放页面。 4. 点击界面上评论按钮跳转到对应的评论页面。 5. 其他按钮无实际点击事件或功能。 -### 相关权限 +## 相关权限 不涉及 -### 约束与限制 +## 约束与限制 -1. 本示例仅支持标准系统上运行,支持设备:华为手机。 -2. HarmonyOS系统:HarmonyOS 5.0.0 Release及以上。 -3. DevEco Studio版本:DevEco Studio 5.0.0 Release及以上。 -4. HarmonyOS SDK版本:HarmonyOS 5.0.0 Release SDK及以上。 \ No newline at end of file +1. 本示例仅支持标准系统上运行,支持设备:华为手机、平板、PC/2in1、智能穿戴。 +2. HarmonyOS系统:HarmonyOS 5.1.0 Release及以上。 +3. DevEco Studio版本:DevEco Studio 5.1.0 Release及以上。 +4. HarmonyOS SDK版本:HarmonyOS 5.1.0 Release SDK及以上。 \ No newline at end of file diff --git a/build-profile.json5 b/build-profile.json5 index 146e5bd..87aa301 100644 --- a/build-profile.json5 +++ b/build-profile.json5 @@ -5,8 +5,9 @@ { "name": "default", "signingConfig": "default", - "compatibleSdkVersion": "5.0.0(12)", - "runtimeOS": "HarmonyOS" + "compatibleSdkVersion": "5.1.0(18)", + "runtimeOS": "HarmonyOS", + "targetSdkVersion": "5.1.0(18)" } ], "buildModeSet": [ @@ -74,6 +75,18 @@ { "name": "constantsCommon", "srcPath": "./common/constantsCommon" + }, + { + "name": "watch", + "srcPath": "./products/watch", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] } ] } \ No newline at end of file diff --git a/common/mediaCommon/src/main/ets/utils/BackgroundUtil.ets b/common/mediaCommon/src/main/ets/utils/BackgroundUtil.ets index 1ac92b3..7471594 100644 --- a/common/mediaCommon/src/main/ets/utils/BackgroundUtil.ets +++ b/common/mediaCommon/src/main/ets/utils/BackgroundUtil.ets @@ -27,7 +27,7 @@ export class BackgroundUtil { public static startContinuousTask(context?: common.UIAbilityContext): void { if (!context) { Logger.error('this avPlayer: ', `context undefined`); - return + return; } let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ diff --git a/common/mediaCommon/src/main/ets/utils/BreakpointSystem.ets b/common/mediaCommon/src/main/ets/utils/BreakpointSystem.ets index e1a5789..2c1cdd2 100644 --- a/common/mediaCommon/src/main/ets/utils/BreakpointSystem.ets +++ b/common/mediaCommon/src/main/ets/utils/BreakpointSystem.ets @@ -60,17 +60,17 @@ export class BreakpointSystem { if (mediaQueryResult.matches) { this.updateCurrentBreakpoint(BreakpointConstants.BREAKPOINT_SM); } - } + }; private isBreakpointMD = (mediaQueryResult: mediaquery.MediaQueryResult): void => { if (mediaQueryResult.matches) { this.updateCurrentBreakpoint(BreakpointConstants.BREAKPOINT_MD); } - } + }; private isBreakpointLG = (mediaQueryResult: mediaquery.MediaQueryResult): void => { if (mediaQueryResult.matches) { this.updateCurrentBreakpoint(BreakpointConstants.BREAKPOINT_LG); } - } + }; public register(): void { this.smListener = uiContext?.getMediaQuery().matchMediaSync(BreakpointConstants.RANGE_SM); diff --git a/common/mediaCommon/src/main/ets/utils/MediaService.ets b/common/mediaCommon/src/main/ets/utils/MediaService.ets index 4242684..5b65c2d 100644 --- a/common/mediaCommon/src/main/ets/utils/MediaService.ets +++ b/common/mediaCommon/src/main/ets/utils/MediaService.ets @@ -46,6 +46,7 @@ export class MediaService { private songList: SongItem[] = []; private formIds: string[] = []; private isCurrent: boolean = true; + private isNeedPlay: boolean = true; private seekCall: (seekDoneTime: number) => void = (seekDoneTime: number) => { this.isCurrent = true; @@ -97,10 +98,11 @@ export class MediaService { this.isPrepared = true; AppStorage.setOrCreate('totalTime', MediaTools.msToCountdownTime(this.getDuration())); AppStorage.setOrCreate('progressMax', this.getDuration()); - if (this.avPlayer) { + if (this.avPlayer && this.isNeedPlay) { this.avPlayer.play(); } this.setAVMetadata(); + this.isNeedPlay = true; Logger.info(TAG, 'AVPlayer prepared succeeded.'); break; case 'playing': @@ -155,6 +157,10 @@ export class MediaService { Logger.info(TAG, `on playPrevious , do playPrevious task`); this.playPrevious(); }; + private volumeChangeCall: (volume: number) => void = (volume: number) => { + Logger.info(TAG, `on volumeChangeCall, do volumeChange task`); + AppStorage.setOrCreate('volume', volume); + }; constructor() { let list: SongItem[] | undefined = AppStorage.get('songList'); @@ -182,8 +188,8 @@ export class MediaService { this.createSession(); } }) .catch((error: BusinessError) => { - Logger.error(TAG, 'this avPlayer: ', `catch error happened,error code is ${error.code}`) - }) + Logger.error(TAG, 'this avPlayer: ', `catch error happened,error code is ${error.code}`); + }); } private setAVPlayerCallback() { @@ -196,7 +202,9 @@ export class MediaService { this.avPlayer.on('timeUpdate', this.updateTimeCall); - this.avPlayer.on('stateChange', this.stateCall) + this.avPlayer.on('stateChange', this.stateCall); + + this.avPlayer.on('volumeChange', this.volumeChangeCall); } async createSession() { @@ -217,12 +225,12 @@ export class MediaService { operationType: wantAgent.OperationType.START_ABILITIES, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] - } + }; wantAgent.getWantAgent(wantAgentInfo).then((agent) => { if (this.session) { this.session.setLaunchAbility(agent); } - }) + }); this.setListenerForMesFromController(); } @@ -278,8 +286,9 @@ export class MediaService { * Play music by index. * * @param musicIndex + * @param isNeedPlay */ - async loadAssent(musicIndex: number) { + async loadAssent(musicIndex: number, loadOnly?: boolean) { if (musicIndex >= this.songList.length) { Logger.error(TAG, `current musicIndex ${musicIndex}`); return; @@ -291,6 +300,9 @@ export class MediaService { this.songItem = await this.songItemBuilder.build(this.songList[this.musicIndex]); let url = this.songItemBuilder.getRealUrl(); if (url) { + if (loadOnly) { + this.isNeedPlay = false; + } let avFileDescriptor: media.AVFileDescriptor = { fd: url.fd, offset: url.offset, length: url.length }; this.avPlayer.fdSrc = avFileDescriptor; Logger.info(TAG, 'loadAsset avPlayer.url:' + this.avPlayer.fdSrc); @@ -372,7 +384,7 @@ export class MediaService { if (this.avPlayer) { this.avPlayer.prepare().then(() => { }).catch((error: BusinessError) => { - Logger.error(TAG, `start error ${JSON.stringify(error)}`) + Logger.error(TAG, `start error ${JSON.stringify(error)}`); this.state = AudioPlayerState.ERROR; this.updateIsPlay(false); this.isPrepared = false; @@ -394,7 +406,7 @@ export class MediaService { this.seek(this.getCurrentTime()); this.updateIsPlay(true); this.state = AudioPlayerState.PLAY; - }) + }); } } @@ -589,7 +601,7 @@ export class MediaService { musicCover: this.songList[this.musicIndex].label, musicSinger: this.songList[this.musicIndex].singer, cardSongList: cardSongList - } + }; let formInfo = formBindingData.createFormBindingData(formData); this.formIds.forEach(formId => { @@ -600,8 +612,8 @@ export class MediaService { if (error.code === SongConstants.ID_NO_EXIT && this.context) { PreferencesUtil.getInstance().removeFormId(this.context, formId); } - }) - }) + }); + }); } catch (error) { Logger.error(TAG, `updateCardData err: ${(error as BusinessError).code}`); } @@ -617,7 +629,7 @@ export class MediaService { } let formData: Record = { 'isPlay': false - } + }; let formInfo = formBindingData.createFormBindingData(formData); for (let index = 0; index < this.formIds.length; index++) { await formProvider.updateForm(this.formIds[index], formInfo); diff --git a/common/mediaCommon/src/main/ets/utils/PreferencesUtil.ets b/common/mediaCommon/src/main/ets/utils/PreferencesUtil.ets index be10d45..2dc7dcb 100644 --- a/common/mediaCommon/src/main/ets/utils/PreferencesUtil.ets +++ b/common/mediaCommon/src/main/ets/utils/PreferencesUtil.ets @@ -40,8 +40,8 @@ export class PreferencesUtil { return; } resolve(pref); - }) - }) + }); + }); } preferencesFlush(preferences: preferences.Preferences) { @@ -49,7 +49,7 @@ export class PreferencesUtil { if (err) { Logger.error(TAG, `Failed to flush. Code:${err.code}, message:${err.message}`); } - }) + }); } preferencesPut(preferences: preferences.Preferences, formIds: Array): Promise { @@ -63,7 +63,7 @@ export class PreferencesUtil { } Logger.info(TAG, `preferencesPut succeed,formIds: ${JSON.stringify(formIds)}`); resolve(true); - }) + }); } catch (error) { Logger.error(TAG, `Failed to put data. Code: ${(error as BusinessError).code}, message:${(error as BusinessError).message}`); @@ -81,7 +81,7 @@ export class PreferencesUtil { } resolve(value); }); - }) + }); } removePreferencesFromCache(context: Context): void { @@ -104,13 +104,13 @@ export class PreferencesUtil { } resolve(value as Array); Logger.info(TAG, `Succeeded in getting value of 'formIds'. val: ${value}.`); - }) - }) + }); + }); } catch (error) { Logger.error(TAG, `WANG Failed to get value of 'formIds'. Code:${(error as BusinessError).code}, message:${(error as BusinessError).message}`); } - return new Promise((resolve, reject) => {}) + return new Promise((resolve, reject) => {}); } async addFormId(context: Context, formId: string) { diff --git a/common/mediaCommon/src/main/ets/utils/SongItemBuilder.ets b/common/mediaCommon/src/main/ets/utils/SongItemBuilder.ets index 500224b..cd01303 100644 --- a/common/mediaCommon/src/main/ets/utils/SongItemBuilder.ets +++ b/common/mediaCommon/src/main/ets/utils/SongItemBuilder.ets @@ -32,18 +32,18 @@ export default class SongItemBuilder { let rawfileFd = await this.context.resourceManager.getRawFd(songItem.src) .catch((error: BusinessError) => { Logger.error(`resourceManager error code ${error.code} message ${error.message}`); - }) + }); if (rawfileFd) { this.realUrl = rawfileFd; } else { - Logger.error('get rawfileFd failed') + Logger.error('get rawfileFd failed'); } Logger.info('MediaAssetBuilder build realUrl:' + this.realUrl); return this.songItem; } public getRealUrl(): resourceManager.RawFileDescriptor | undefined { - Logger.info(`url ${this.realUrl}`) + Logger.info(`url ${this.realUrl}`); return this.realUrl; } diff --git a/common/mediaCommon/src/main/ets/viewmodel/MusicData.ets b/common/mediaCommon/src/main/ets/viewmodel/MusicData.ets index c99528f..67e8a98 100644 --- a/common/mediaCommon/src/main/ets/viewmodel/MusicData.ets +++ b/common/mediaCommon/src/main/ets/viewmodel/MusicData.ets @@ -36,4 +36,4 @@ enum AudioPlayerState { UNKNOWN } -export { MusicPlayMode, AudioPlayerState } \ No newline at end of file +export { MusicPlayMode, AudioPlayerState }; \ No newline at end of file diff --git a/features/live/src/main/ets/view/LiveList.ets b/features/live/src/main/ets/view/LiveList.ets index df4f8b4..74f778c 100644 --- a/features/live/src/main/ets/view/LiveList.ets +++ b/features/live/src/main/ets/view/LiveList.ets @@ -37,7 +37,7 @@ export struct LiveList { Scroll(this.scroller) { Column() { ForEach(this.liveStreams, (item: LiveStream, index: number) => { - this.LiveItem(item, index) + this.LiveItem(item, index); }, (item: LiveStream, index: number) => index + JSON.stringify(item)) } .width(LiveConstants.FULL_WIDTH_PERCENT) diff --git a/features/musicComment/src/main/ets/view/MusicCommentPage.ets b/features/musicComment/src/main/ets/view/MusicCommentPage.ets index 4a09f62..a95d12e 100644 --- a/features/musicComment/src/main/ets/view/MusicCommentPage.ets +++ b/features/musicComment/src/main/ets/view/MusicCommentPage.ets @@ -84,7 +84,7 @@ export struct MusicCommentPage { $r('app.float.margin_right_sm') : $r('app.float.margin_right') }) - this.ShowTitle($r('app.string.wonderful_comment')) + this.ShowTitle($r('app.string.wonderful_comment')); List() { ForEach(this.wonderfulComment, (comment: Comment, index?: number) => { @@ -139,7 +139,7 @@ export struct MusicCommentPage { $r('app.float.margin_right_sm') : $r('app.float.margin_right_list') }) - this.ShowTitle($r('app.string.new_comment')) + this.ShowTitle($r('app.string.new_comment')); List() { ForEach(this.newComment, (comment: Comment) => { diff --git a/features/musicList/Index.ets b/features/musicList/Index.ets index 917bff7..c91b68b 100644 --- a/features/musicList/Index.ets +++ b/features/musicList/Index.ets @@ -2,3 +2,4 @@ export { Content } from './src/main/ets/components/ListContent'; export { Header } from './src/main/ets/components/Header'; export { Player } from './src/main/ets/components/Player'; export { MusicListPage } from './src/main/ets/view/MusicListPage'; +export {songList} from '../musicList/src/main/ets/viewmodel/SongListData'; \ No newline at end of file diff --git a/features/musicList/src/main/ets/components/AlbumComponent.ets b/features/musicList/src/main/ets/components/AlbumComponent.ets index 47bb2ea..f6b8f56 100644 --- a/features/musicList/src/main/ets/components/AlbumComponent.ets +++ b/features/musicList/src/main/ets/components/AlbumComponent.ets @@ -140,19 +140,19 @@ export struct AlbumComponent { GridCol({ span: { sm: GridConstants.SPAN_FOUR, md: GridConstants.SPAN_TWELVE, lg: GridConstants.SPAN_TWELVE } }) { - this.CoverImage() + this.CoverImage(); } GridCol({ span: { sm: GridConstants.SPAN_EIGHT, md: GridConstants.SPAN_TWELVE, lg: GridConstants.SPAN_TWELVE } }) { - this.CoverIntroduction() + this.CoverIntroduction(); } GridCol({ span: { sm: GridConstants.SPAN_TWELVE, md: GridConstants.SPAN_TWELVE, lg: GridConstants.SPAN_TWELVE } }) { - this.CoverOptions() + this.CoverOptions(); } .padding({ top: this.currentBreakpoint === BreakpointConstants.BREAKPOINT_SM ? $r('app.float.option_margin') : 0, diff --git a/features/musicList/src/main/ets/components/ControlAreaComponent.ets b/features/musicList/src/main/ets/components/ControlAreaComponent.ets index 49f0327..6605ea3 100644 --- a/features/musicList/src/main/ets/components/ControlAreaComponent.ets +++ b/features/musicList/src/main/ets/components/ControlAreaComponent.ets @@ -165,5 +165,5 @@ export struct ControlAreaComponent { function controlImageBuilder() { .aspectRatio(1) .opacity(0.86) - .objectFit(ImageFit.Contain) + .objectFit(ImageFit.Contain); } diff --git a/features/musicList/src/main/ets/components/LyricsComponent.ets b/features/musicList/src/main/ets/components/LyricsComponent.ets index 667b6a5..9b1ea3d 100644 --- a/features/musicList/src/main/ets/components/LyricsComponent.ets +++ b/features/musicList/src/main/ets/components/LyricsComponent.ets @@ -61,7 +61,7 @@ export struct LyricsComponent { } else if (this.songList[this.selectIndex].lyric.endsWith(LyricFile.LRC)) { this.mLrcEntryList = parseLrcLyric(stringData); } - }) + }); } build() { diff --git a/features/musicList/src/main/ets/components/MusicControlComponent.ets b/features/musicList/src/main/ets/components/MusicControlComponent.ets index e68a0ef..aec824a 100644 --- a/features/musicList/src/main/ets/components/MusicControlComponent.ets +++ b/features/musicList/src/main/ets/components/MusicControlComponent.ets @@ -258,21 +258,21 @@ export struct MusicControlComponent { let colorArr = ColorConversion.dealColor(color.red, color.green, color.blue); this.imageColor = `rgba(${colorArr[0]}, ${colorArr[1]}, ${colorArr[2]}, 1)`; } - }) + }); let headFilter = effectKit.createEffect(pixelMap); if (headFilter !== null) { headFilter.blur(PlayerConstants.IMAGE_BLUR); headFilter.getEffectPixelMap().then((value) => { this.imageLabel = value; - }) + }); } }) .catch((error: BusinessError) => { - Logger.error(`${error.code} + ${error.message}`) - }) + Logger.error(`${error.code} + ${error.message}`); + }); }) .catch((error: BusinessError) => { - Logger.error(`${error.code} + ${error.message}`) - }) + Logger.error(`${error.code} + ${error.message}`); + }); } } \ No newline at end of file diff --git a/features/musicList/src/main/ets/components/MusicInfoComponent.ets b/features/musicList/src/main/ets/components/MusicInfoComponent.ets index 3828c58..967036f 100644 --- a/features/musicList/src/main/ets/components/MusicInfoComponent.ets +++ b/features/musicList/src/main/ets/components/MusicInfoComponent.ets @@ -47,8 +47,8 @@ export struct MusicInfoComponent { offset: { md: BreakpointConstants.OFFSET_MD } }) { Column() { - this.CoverInfo() - this.MusicInfo() + this.CoverInfo(); + this.MusicInfo(); Blank() ControlAreaComponent() } diff --git a/features/musicList/src/main/ets/components/PlayList.ets b/features/musicList/src/main/ets/components/PlayList.ets index 9ed1b12..1ad3f2e 100644 --- a/features/musicList/src/main/ets/components/PlayList.ets +++ b/features/musicList/src/main/ets/components/PlayList.ets @@ -1,3 +1,4 @@ +/* eslint-disable */ /* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); @@ -100,7 +101,7 @@ export struct PlayList { .width($r('app.float.order_icon_size')) } .onClick(() => { - MediaService.getInstance().loadAssent(index) + MediaService.getInstance().loadAssent(index); this.isShowPlay = true; }) .height($r('app.float.list_item_height')) @@ -109,19 +110,19 @@ export struct PlayList { build() { Column() { - this.PlayAll() + this.PlayAll(); List() { LazyForEach(new SongDataSource(this.songList), (item: SongItem, index: number) => { ListItem() { Column() { - this.SongItem(item, index) + this.SongItem(item, index); } .padding({ left: $r('app.float.list_item_padding'), right: $r('app.float.list_item_padding') }) } - }, (item: SongItem, index?: number) => JSON.stringify(item) + index) + }, (item: SongItem, index?: number) => (item).toString() + index) } .width(StyleConstants.FULL_WIDTH) .backgroundColor(Color.White) @@ -129,6 +130,7 @@ export struct PlayList { .lanes(this.currentBreakpoint === BreakpointConstants.BREAKPOINT_LG ? ContentConstants.COL_TWO : ContentConstants.COL_ONE) .layoutWeight(1) + .cachedCount(2) .divider({ color: $r('app.color.list_divider'), strokeWidth: $r('app.float.stroke_width'), diff --git a/features/musicList/src/main/ets/components/Player.ets b/features/musicList/src/main/ets/components/Player.ets index de49d77..9e7c65a 100644 --- a/features/musicList/src/main/ets/components/Player.ets +++ b/features/musicList/src/main/ets/components/Player.ets @@ -198,7 +198,7 @@ export struct Player { this.topArea = this.getUIContext().px2vp(area.topRect.height); let bottomArea = windowStage.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR); this.bottomArea = this.getUIContext().px2vp(bottomArea.bottomRect.height); - Logger.info('bottomArea ' + this.bottomArea) + Logger.info('bottomArea ' + this.bottomArea); if (this.topArea > 0) { windowStage.setWindowLayoutFullScreen(true); } @@ -207,7 +207,7 @@ export struct Player { }; windowStage.setWindowSystemBarProperties(sysBarProps); }).catch((error: BusinessError) => { - Logger.error(`${error.code} + ${error.message}`) + Logger.error(`${error.code} + ${error.message}`); }); }) .onDisAppear(() => { @@ -224,7 +224,7 @@ export struct Player { }; windowStage.setWindowSystemBarProperties(sysBarProps); }).catch((error: BusinessError) => { - Logger.error(`${error.code} + ${error.message}`) + Logger.error(`${error.code} + ${error.message}`); }); }) .gesture( diff --git a/features/musicList/src/main/ets/lyric/LrcUtils.ets b/features/musicList/src/main/ets/lyric/LrcUtils.ets index 38f2cdc..44f47c3 100644 --- a/features/musicList/src/main/ets/lyric/LrcUtils.ets +++ b/features/musicList/src/main/ets/lyric/LrcUtils.ets @@ -68,7 +68,7 @@ export function parseLrcLyric(text: string): Array { if (lrc && lrc.length > 0) { lrc.sort((a, b) => { return a.lineStartTime - b.lineStartTime; - }) + }); for (let i = 0; i < lrc.length; i++) { if (i === lrc.length - 1) { lrc[i].lineDuration = Number.MAX_VALUE; @@ -125,7 +125,7 @@ export function parseKrcLyric(lyricText: string): LrcEntry[] { } lyricLines.sort((a, b) => { return a.lineStartTime - b.lineStartTime; - }) + }); return lyricLines; } diff --git a/features/musicList/src/main/ets/lyric/LrcView.ets b/features/musicList/src/main/ets/lyric/LrcView.ets index 1eaf47c..260100e 100644 --- a/features/musicList/src/main/ets/lyric/LrcView.ets +++ b/features/musicList/src/main/ets/lyric/LrcView.ets @@ -481,7 +481,7 @@ export default struct shiLrcView { this.context.fillText(text, this.lrcX, this.lrcY, this.lrcWidth); } else { - this.context.textAlign = 'center' + this.context.textAlign = 'center'; this.context.fillText(text, this.lrcX, this.lrcY, this.lrcWidth); } break; diff --git a/features/musicList/src/main/ets/view/MusicListPage.ets b/features/musicList/src/main/ets/view/MusicListPage.ets index ad29881..8be59ae 100644 --- a/features/musicList/src/main/ets/view/MusicListPage.ets +++ b/features/musicList/src/main/ets/view/MusicListPage.ets @@ -18,7 +18,7 @@ import { StyleConstants, BreakpointConstants, SongConstants } from '@ohos/consta import { Header } from '../components/Header'; import { Player } from '../components/Player'; import { Content } from '../components/ListContent'; -import { songList } from '../viewmodel/SongListData' +import { songList } from '../viewmodel/SongListData'; @Component export struct MusicListPage { diff --git a/features/musicList/src/main/ets/viewmodel/SongDataSource.ets b/features/musicList/src/main/ets/viewmodel/SongDataSource.ets index 866be12..6cd8ea3 100644 --- a/features/musicList/src/main/ets/viewmodel/SongDataSource.ets +++ b/features/musicList/src/main/ets/viewmodel/SongDataSource.ets @@ -65,24 +65,24 @@ export class SongDataSource implements IDataSource { notifyDataAdd(index: number): void { this.listeners.forEach(listener => { listener.onDataAdd(index); - }) + }); } notifyDataChange(index: number): void { this.listeners.forEach(listener => { listener.onDataChange(index); - }) + }); } notifyDataDelete(index: number): void { this.listeners.forEach(listener => { listener.onDataDelete(index); - }) + }); } notifyDataMove(from: number, to: number): void { this.listeners.forEach(listener => { listener.onDataMove(from, to); - }) + }); } } \ No newline at end of file diff --git a/features/musicList/src/main/ets/viewmodel/SongListData.ets b/features/musicList/src/main/ets/viewmodel/SongListData.ets index d7f5303..808e80e 100644 --- a/features/musicList/src/main/ets/viewmodel/SongListData.ets +++ b/features/musicList/src/main/ets/viewmodel/SongListData.ets @@ -86,7 +86,7 @@ const songList: SongItem[] = [ label: $r('app.media.ic_avatar17'), src: 'power.wav', index:32, lyric: '' }, { id: 34, title: '无归', singer: '小安安', mark: $r('app.media.ic_sq'), label: $r('app.media.ic_avatar11'), src: 'power.wav', index:33, lyric: '' } -] +]; const optionList : OptionItem[] = [ { image: $r('app.media.ic_collect'), text: $r('app.string.collect') }, @@ -95,7 +95,7 @@ const optionList : OptionItem[] = [ pageIndexInfos.pushPathByName(RouterUrlConstants.MUSIC_COMMENT, null); }}, { image: $r('app.media.ic_share'), text: $r('app.string.share') } -] +]; class OptionItem { image: Resource = $r('app.media.ic_collect'); @@ -103,4 +103,4 @@ class OptionItem { action?: (pageIndexInfos: NavPathStack) => void; } -export { optionList, OptionItem, songList } \ No newline at end of file +export { optionList, OptionItem, songList }; \ No newline at end of file diff --git a/products/phone/src/main/ets/entryability/EntryAbility.ets b/products/phone/src/main/ets/entryability/EntryAbility.ets index e617cbb..0317f56 100644 --- a/products/phone/src/main/ets/entryability/EntryAbility.ets +++ b/products/phone/src/main/ets/entryability/EntryAbility.ets @@ -21,7 +21,7 @@ export default class EntryAbility extends UIAbility { private windowObj?: window.Window; onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { - AppStorage.setOrCreate('context', this.context) + AppStorage.setOrCreate('context', this.context); hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); } @@ -38,8 +38,8 @@ export default class EntryAbility extends UIAbility { this.updateBreakpoint(this.windowObj.getWindowProperties().windowRect.width); this.windowObj.on('windowSizeChange', (windowSize: window.Size) => { this.updateBreakpoint(windowSize.width); - }) - }) + }); + }); windowStage.loadContent('pages/Index', (err) => { AppStorage.setOrCreate('uiContext', windowStage.getMainWindowSync().getUIContext()); diff --git a/products/watch/build-profile.json5 b/products/watch/build-profile.json5 new file mode 100644 index 0000000..4d61187 --- /dev/null +++ b/products/watch/build-profile.json5 @@ -0,0 +1,28 @@ +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/products/watch/hvigorfile.ts b/products/watch/hvigorfile.ts new file mode 100644 index 0000000..b0e3a1a --- /dev/null +++ b/products/watch/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins: [] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/products/watch/obfuscation-rules.txt b/products/watch/obfuscation-rules.txt new file mode 100644 index 0000000..272efb6 --- /dev/null +++ b/products/watch/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/products/watch/oh-package.json5 b/products/watch/oh-package.json5 new file mode 100644 index 0000000..1edae34 --- /dev/null +++ b/products/watch/oh-package.json5 @@ -0,0 +1,17 @@ +{ + "name": "watch", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + "musicList": "file:../../features/musicList", + "@ohos/constantsCommon": "file:../../common/constantsCommon", + "@ohos/live": "file:../../features/live", + "@ohos/musicComment": "file:../../features/musicComment", + "@ohos/musicList": "file:../../features/musicList", + "@ohos/mediaCommon": "file:../../common/mediaCommon", + } +} + diff --git a/products/watch/src/main/ets/constants/StyleConstants.ets b/products/watch/src/main/ets/constants/StyleConstants.ets new file mode 100644 index 0000000..aa67258 --- /dev/null +++ b/products/watch/src/main/ets/constants/StyleConstants.ets @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Common constants for all styles. + */ +export class StyleConstants { + /** + * Component width percentage: 100%. + */ + static readonly FULL_WIDTH: string = '100%'; + /** + * Component height percentage: 100%. + */ + static readonly FULL_HEIGHT: string = '100%'; + /** + * Circle Border Radius. + */ + static readonly CIRCLE_BORDER_RADIUS: string = '50%'; +} \ No newline at end of file diff --git a/products/watch/src/main/ets/pages/Index.ets b/products/watch/src/main/ets/pages/Index.ets new file mode 100644 index 0000000..ce1dcf4 --- /dev/null +++ b/products/watch/src/main/ets/pages/Index.ets @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + ArcSwiper, + ArcSwiperAttribute, + ArcDotIndicator, + ArcDirection, + ArcSwiperController +} from '@kit.ArkUI'; +import { Home } from '../view/Home'; +import { PlayList } from '../view/PlayList'; +import { MediaService } from '@ohos/mediaCommon'; +import { songList } from 'musicList'; +import { StyleConstants } from '../constants/StyleConstants'; + +@Preview +@Entry +@Component +struct Index { + @Provide pageStack: NavPathStack = new NavPathStack(); + innerSelectedIndex: number = 0; + private wearableSwiperController: ArcSwiperController = new ArcSwiperController(); + private arcDotIndicator: ArcDotIndicator = new ArcDotIndicator(); + + aboutToAppear(): void { + AppStorage.setOrCreate('songList', songList); + MediaService.getInstance(); + } + + build() { + Navigation(this.pageStack) { + Column() { + Row() { + ArcSwiper(this.wearableSwiperController) { + Home() + PlayList() + } + .duration(400) + .indicator(this.arcDotIndicator + .arcDirection(ArcDirection.SIX_CLOCK_DIRECTION) + .selectedItemColor('#FE1B48') + ) + .onAnimationStart((index: number, targetIndex: number) => { + this.innerSelectedIndex = targetIndex; + }) + .onGestureRecognizerJudgeBegin((event: BaseGestureEvent, current: GestureRecognizer, + others: Array): GestureJudgeResult => { // When the recognizer is about to succeed, set the recognizer enable status based on the current component state. + if (current) { + let target = current.getEventTargetInfo(); + if (target && current.isBuiltIn() && current.getType() == GestureControl.GestureType.PAN_GESTURE) { + // Here, the condition `swiperTarget.isBegin()` or `innerSelectedIndex === 0` indicates that the ArcSwiper has been swiped to the beginning. + let swiperTarget = target as ScrollableTargetInfo; + if (swiperTarget instanceof ScrollableTargetInfo && + (swiperTarget.isBegin() || this.innerSelectedIndex === 0)) { + let panEvent = event as PanGestureEvent; + if (panEvent && panEvent.offsetX > 0 && (swiperTarget.isBegin() || this.innerSelectedIndex === 0)) { + return GestureJudgeResult.REJECT; + } + } + } + } + return GestureJudgeResult.CONTINUE; + }) + } + .height(StyleConstants.FULL_HEIGHT) + } + .width(StyleConstants.FULL_WIDTH) + } + .hideTitleBar(true) + } +} \ No newline at end of file diff --git a/products/watch/src/main/ets/view/Home.ets b/products/watch/src/main/ets/view/Home.ets new file mode 100644 index 0000000..f5d4a89 --- /dev/null +++ b/products/watch/src/main/ets/view/Home.ets @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { LengthMetrics } from '@kit.ArkUI'; +import { ArcList, ArcListItem, ArcListAttribute } from '@kit.ArkUI'; +import { StyleConstants } from '../constants/StyleConstants'; + +class Menu { + icon: Resource; + text: Resource; + pathName: string; + + constructor(icon: Resource, text: Resource, pathName: string) { + this.icon = icon; + this.text = text; + this.pathName = pathName; + } +} + +@Preview +@Component +export struct Home { + @Consume pageStack: NavPathStack; + readonly HOME_BTN_WIDTH: string = '90%'; + private menuList: Menu[] = [ + new Menu( + $r('app.media.hottest_playlists'), + $r('app.string.home_hottest_playlists'), + 'playList' + ), + new Menu( + $r('app.media.my_favorite'), + $r('app.string.home_my_favorite'), + 'songList' + ), + new Menu( + $r('app.media.is_playing'), + $r('app.string.home_is_playing'), + 'songPage' + ), + new Menu( + $r('app.media.setting'), + $r('app.string.home_setting'), + 'setting' + ) + ]; + + build() { + Column() { + ArcList({ initialIndex: 0 }) { + ForEach(this.menuList, (item: Menu) => { + ArcListItem() { + Row() { + Image(item.icon) + .width($r('app.float.home_icon_width')) + .height($r('app.float.home_icon_width')) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + .backgroundColor($r('app.color.home_icon_background')) + .padding($r('app.float.home_icon_padding')) + + Text(item.text) + .fontColor($r('app.color.font_color')) + .fontSize($r('app.float.home_font_size')) + + Image($r('app.media.chevron_right')) + .width($r('app.float.home_icon_jump_width')) + } + .width(this.HOME_BTN_WIDTH) + .height($r('app.float.home_btn_height')) + .padding({ left: $r('app.float.list_btn_padding'), right: $r('app.float.list_btn_padding') }) + .justifyContent(FlexAlign.SpaceBetween) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + .focusable(true) + .focusOnTouch(true) + .backgroundColor($r('app.color.home_btn_background')) + .onClick(() => { + if (item.pathName === 'setting') { + return; + } + this.pageStack.replacePathByName(item.pathName, null); + }) + } + }, + (item: Menu, index: number) => JSON.stringify(item) + index) + } + .scrollBar(BarState.Off) + .space(LengthMetrics.vp(5)) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + .focusable(true) + .focusOnTouch(true) + .defaultFocus(true) + } + .align(Alignment.Center) + .width(StyleConstants.FULL_WIDTH) + .height(StyleConstants.FULL_HEIGHT) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + } +} \ No newline at end of file diff --git a/products/watch/src/main/ets/view/PlayList.ets b/products/watch/src/main/ets/view/PlayList.ets new file mode 100644 index 0000000..a643e70 --- /dev/null +++ b/products/watch/src/main/ets/view/PlayList.ets @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ArcSwiper, ArcSwiperAttribute, ArcSwiperController } from '@kit.ArkUI'; +import { StyleConstants } from '../constants/StyleConstants'; + +@Builder +export function PlayListBuilder() { + PlayList(); +} + +class PlayListSheet { + name: Resource; + background: Resource; + title: Resource; + + constructor(name: Resource, background: Resource, title: Resource) { + this.name = name; + this.background = background; + this.title = title; + } +} + +@Preview +@Component +export struct PlayList { + @Consume pageStack: NavPathStack; + @State itemSimpleColor: Color | number | string = ''; + @State selectedItemSimpleColor: Color | number | string = ''; + innerSelectedIndex: number = 0; + private wearableSwiperController: ArcSwiperController = new ArcSwiperController(); + private playList: PlayListSheet[] = [ + new PlayListSheet( + $r('app.string.playlist_name_one'), + $r('app.media.playlist_bg1'), + $r('app.string.playlist_title_one') + ), + new PlayListSheet( + $r('app.string.playlist_name_two'), + $r('app.media.playlist_bg2'), + $r('app.string.playlist_title_two') + ) + ]; + + build() { + NavDestination() { + Column() { + ArcSwiper(this.wearableSwiperController) { + ForEach(this.playList, (item: PlayListSheet, index: number) => { + Column({ space: 10 }) { + Row() { + Text(item.name) + .fontWeight(FontWeight.Bold) + .fontColor($r('app.color.font_color')) + .fontSize($r('app.float.home_font_size')) + Image($r('app.media.chevron_right')) + .width($r('app.float.home_icon_jump_width')) + .margin({ left: $r('app.float.playlist_padding') }) + } + + Image($r('app.media.play_btn_fill')) + .width($r('app.float.playlist_icon')) + .height($r('app.float.playlist_icon')) + .position({ x: '25%', y: '65%' }) + Text(item.title) + } + .width(StyleConstants.FULL_WIDTH) + .height(StyleConstants.FULL_HEIGHT) + .backgroundImage(item.background, ImageRepeat.NoRepeat) + .backgroundImageSize({ width: StyleConstants.FULL_WIDTH, height: StyleConstants.FULL_HEIGHT }) + .justifyContent(FlexAlign.SpaceBetween) + .padding({ top: $r('app.float.playlist_row_padding'), bottom: $r('app.float.playlist_row_padding') }) + .onClick(() => { + this.pageStack.replacePathByName('songList', null); + }) + }, (item: PlayListSheet, index?: number) => index + JSON.stringify(item)) + } + .index(0) + .duration(400) + .vertical(true) + .indicator(false) + .disableSwipe(false) + .digitalCrownSensitivity(CrownSensitivity.MEDIUM) + .disableTransitionAnimation(false) + .onAnimationStart((index: number, targetIndex: number) => { + this.innerSelectedIndex = targetIndex; + }) + .onGestureRecognizerJudgeBegin((event: BaseGestureEvent, current: GestureRecognizer, + ): GestureJudgeResult => { // When the recognizer is about to succeed, set the recognizer enable status based on the current component state. + if (current) { + let target = current.getEventTargetInfo(); + if (target && current.isBuiltIn() && current.getType() == GestureControl.GestureType.PAN_GESTURE) { + // Here, the condition `swiperTarget.isBegin()` or `innerSelectedIndex === 0` indicates that the ArcSwiper has been swiped to the beginning. + let swiperTarget = target as ScrollableTargetInfo; + if (swiperTarget instanceof ScrollableTargetInfo && + (swiperTarget.isBegin() || this.innerSelectedIndex === 0)) { + let panEvent = event as PanGestureEvent; + if (panEvent && panEvent.offsetX > 0 && (swiperTarget.isBegin() || this.innerSelectedIndex === 0)) { + return GestureJudgeResult.REJECT; + } + } + } + } + return GestureJudgeResult.CONTINUE; + }) + } + .width(StyleConstants.FULL_WIDTH) + .height(StyleConstants.FULL_HEIGHT) + } + .hideTitleBar(true) + } +} \ No newline at end of file diff --git a/products/watch/src/main/ets/view/SongList.ets b/products/watch/src/main/ets/view/SongList.ets new file mode 100644 index 0000000..3cb4fa5 --- /dev/null +++ b/products/watch/src/main/ets/view/SongList.ets @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { LengthMetrics } from '@kit.ArkUI'; +import { ArcList, ArcListItem, ArcListAttribute, ArcListItemAttribute } from '@kit.ArkUI'; +import { MediaService, SongItem } from '@ohos/mediaCommon'; +import { StyleConstants } from '../constants/StyleConstants'; + +@Builder +export function SongListBuilder() { + SongList(); +} + +@Preview +@Component +struct SongList { + readonly HOME_BTN_WIDTH: string = '90%'; + @Consume pageStack: NavPathStack; + @StorageLink('songList') songList: SongItem[] = []; + + aboutToAppear(): void { + MediaService.getInstance(); + } + + build() { + NavDestination() { + Column() { + ArcList({ initialIndex: 0 }) { + ForEach(this.songList, (item: SongItem) => { + ArcListItem() { + Row() { + Image(item.label) + .width($r('app.float.home_icon_width')) + .height($r('app.float.home_icon_width')) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + + Column() { + Text(item.title) + .fontWeight(FontWeight.Bold) + .fontColor($r('app.color.font_color')) + Text(item.singer) + .fontColor($r('app.color.text_color')) + } + .layoutWeight(1) + } + .width(this.HOME_BTN_WIDTH) + .height($r('app.float.home_btn_height')) + .padding({ left: $r('app.float.list_btn_padding'), right: $r('app.float.list_btn_padding') }) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + .focusable(true) + .focusOnTouch(true) + .backgroundColor($r('app.color.home_btn_background')) + } + .align(Alignment.Center) + .onClick(async () => { + await MediaService.getInstance().loadAssent(index); + this.pageStack.replacePathByName('songPage', null); + }) + }, (item: SongItem, index: number) => JSON.stringify(item) + index) + } + .scrollBar(BarState.Off) + .space(LengthMetrics.vp(5)) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + .focusable(true) + .focusOnTouch(true) + .defaultFocus(true) + } + .align(Alignment.Center) + .width(StyleConstants.FULL_WIDTH) + .height(StyleConstants.FULL_HEIGHT) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + } + .hideTitleBar(true) + } +} \ No newline at end of file diff --git a/products/watch/src/main/ets/view/SongPage.ets b/products/watch/src/main/ets/view/SongPage.ets new file mode 100644 index 0000000..8e1638d --- /dev/null +++ b/products/watch/src/main/ets/view/SongPage.ets @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MediaService, SongItem } from '@ohos/mediaCommon'; +import { StyleConstants } from '../constants/StyleConstants'; +import { VolumeSlider } from './VolumeSliderComponent'; + +@Builder +export function SongPageBuilder() { + SongPage(); +} + +@Preview +@Component +struct SongPage { + @StorageLink('songList') songList: SongItem[] = []; + @StorageLink('selectIndex') selectIndex: number = 0; + @StorageLink('isPlay') isPlay: boolean = false; + @StorageLink('progress') time: number = 0; + @StorageLink('progressMax') max: number = 0; + @StorageLink('isFirstLaunch') isFirstLaunch: boolean = true; + readonly HALF_WIDTH: string = '50%'; + + aboutToAppear(): void { + if (this.isFirstLaunch) { + MediaService.getInstance().loadAssent(0, true); + } + AppStorage.setOrCreate('isFirstLaunch', false); + } + + build() { + NavDestination() { + Column() { + Column() { + Text(this.songList[this.selectIndex].title) + .fontWeight(FontWeight.Bold) + .fontColor($r('app.color.font_color')) + Text(this.songList[this.selectIndex].singer) + .fontColor($r('app.color.play_singer_color')) + } + + Row() { + Column() { + Image($r('app.media.previous_btn')) + .width($r('app.float.play_song_img')) + } + .onClick(() => { + MediaService.getInstance().playPrevious(); + }) + + Stack() { + Image(this.songList[this.selectIndex].label) + .width($r('app.float.play_circle_img')) + .height($r('app.float.play_circle_img')) + .borderRadius(StyleConstants.CIRCLE_BORDER_RADIUS) + + Progress({ value: this.time, total: this.max, type: ProgressType.Ring }) + .width($r('app.float.play_progress_width')) + .backgroundColor(Color.Transparent) + .color($r('app.color.font_color')) + + Image($r('app.media.play_btn')) + .width($r('app.float.play_song_img')) + .visibility(this.isPlay === true ? Visibility.None : Visibility.Visible) + .onClick(() => { + if (MediaService.getInstance().getFirst()) { + MediaService.getInstance().loadAssent(0); + } else { + this.isPlay ? MediaService.getInstance().pause() : MediaService.getInstance().play(); + } + }) + + Image($r('app.media.pause_btn')) + .width($r('app.float.play_song_img')) + .visibility(this.isPlay === true ? Visibility.Visible : Visibility.None) + .onClick(() => { + MediaService.getInstance().pause(); + }) + } + .width(this.HALF_WIDTH) + .align(Alignment.Center) + + Column() { + Image($r('app.media.next_btn')) + .width($r('app.float.play_song_img')) + } + .onClick(() => { + MediaService.getInstance().playNextAuto(true); + }) + } + .justifyContent(FlexAlign.SpaceAround) + .width('85%') + + Row() { + Image($r('app.media.download')) + .width($r('app.float.play_icon_width')) + Image($r('app.media.repeat')) + .width($r('app.float.play_icon_width')) + Image($r('app.media.full_screen')) + .width($r('app.float.play_icon_width')) + } + .width('60%') + .justifyContent(FlexAlign.SpaceAround) + } + .width(StyleConstants.FULL_WIDTH) + .height(StyleConstants.FULL_HEIGHT) + .padding({ top: $r('app.float.play_column_padding'), bottom: $r('app.float.play_column_padding') }) + .justifyContent(FlexAlign.SpaceAround) + + VolumeSlider() + } + .hideTitleBar(true) + .focusable(true) + .focusOnTouch(true) + .defaultFocus(true) + .linearGradient({ + direction: GradientDirection.Bottom, + colors: [ + ['#5E4C4B', 1.0], + ['#695951', 1.0] + ] + }) + } +} \ No newline at end of file diff --git a/products/watch/src/main/ets/view/VolumeSliderComponent.ets b/products/watch/src/main/ets/view/VolumeSliderComponent.ets new file mode 100644 index 0000000..ffd156b --- /dev/null +++ b/products/watch/src/main/ets/view/VolumeSliderComponent.ets @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + ArcSlider, + ArcSliderLayoutOptions, + ArcSliderLayoutOptionsConstructorOptions, + ArcSliderOptions, + ArcSliderOptionsConstructorOptions, + ArcSliderPosition, + ArcSliderStyleOptions, + ArcSliderStyleOptionsConstructorOptions, + ArcSliderValueOptions, + ArcSliderValueOptionsConstructorOptions +} from '@kit.ArkUI'; +import { BusinessError } from '@kit.BasicServicesKit'; +import { MediaService } from '@ohos/mediaCommon'; +import { hilog } from '@kit.PerformanceAnalysisKit'; + +@Preview +@Component +export struct VolumeSlider { + @StorageLink('volume') volume: number = 0.4; + valueOptionsConstructorOptions: ArcSliderValueOptionsConstructorOptions = { + progress: this.volume * 100, + min: 0, + max: 100 + }; + layoutOptionsConstructorOptions: ArcSliderLayoutOptionsConstructorOptions = { + reverse: true, + position: ArcSliderPosition.RIGHT + }; + styleOptionsConstructorOptions: ArcSliderStyleOptionsConstructorOptions = { + trackThickness: 5, + activeTrackThickness: 8, + trackColor: '#33f1ebeb', + selectedColor: '#FE1B48', + trackBlur: 20 + }; + valueOptions: ArcSliderValueOptions = new ArcSliderValueOptions(this.valueOptionsConstructorOptions); + layoutOptions: ArcSliderLayoutOptions = new ArcSliderLayoutOptions(this.layoutOptionsConstructorOptions); + styleOptions: ArcSliderStyleOptions = new ArcSliderStyleOptions(this.styleOptionsConstructorOptions); + arcSliderOptionsConstructorOptions: ArcSliderOptionsConstructorOptions = { + valueOptions: this.valueOptions, + layoutOptions: this.layoutOptions, + styleOptions: this.styleOptions, + digitalCrownSensitivity: CrownSensitivity.LOW, + onChange: (progress: number) => { + this.setAVPlayerVolume(progress); + }, + }; + arcSliderOptions: ArcSliderOptions = new ArcSliderOptions(this.arcSliderOptionsConstructorOptions); + + setAVPlayerVolume(progress: number) { + try { + MediaService.getInstance().avPlayer?.setVolume(progress / 100); + } catch (error) { + hilog.error(0x0000, 'volumeSlider', "ArcSlider setVolume failed", (error as BusinessError).code); + } + } + + build() { + Column() { + ArcSlider({ options: this.arcSliderOptions }) + .focusable(true) + .focusOnTouch(true) + .defaultFocus(true) + .zIndex(999) + .onDigitalCrown((event: CrownEvent) => { + event.stopPropagation(); + const STEP_DEGREE = 20; + let newVolume = this.volume + event.degree / STEP_DEGREE; + newVolume = Math.max(0, Math.min(100, newVolume)); + this.setAVPlayerVolume(newVolume); + }) + Image($r('app.media.speaker_fill')) + .width($r('app.float.volume_icon_width')) + .height($r('app.float.volume_icon_width')) + .rotate({ angle: '-30deg' }) + .position({ + right: $r('app.float.volume_icon_right'), + top: $r('app.float.volume_icon_top'), + }) + } + .hitTestBehavior(HitTestMode.Transparent) + .position({ + top: 0, + right: 0 + }) + } +} diff --git a/products/watch/src/main/ets/watchability/WatchAbility.ets b/products/watch/src/main/ets/watchability/WatchAbility.ets new file mode 100644 index 0000000..efa9a31 --- /dev/null +++ b/products/watch/src/main/ets/watchability/WatchAbility.ets @@ -0,0 +1,45 @@ +import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; + +const DOMAIN = 0x0000; + +export default class WatchAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + AppStorage.setOrCreate('context', this.context); + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(DOMAIN, 'testTag', `${err.code} + ${err.message}`); + return; + } + AppStorage.setOrCreate('uiContext', windowStage.getMainWindowSync().getUIContext()); + hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground'); + } +} diff --git a/products/watch/src/main/ets/watchbackupability/WatchBackupAbility.ets b/products/watch/src/main/ets/watchbackupability/WatchBackupAbility.ets new file mode 100644 index 0000000..d5e190e --- /dev/null +++ b/products/watch/src/main/ets/watchbackupability/WatchBackupAbility.ets @@ -0,0 +1,16 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +const DOMAIN = 0x0000; + +export default class WatchBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(DOMAIN, 'testTag', 'onBackup ok'); + await Promise.resolve(); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(DOMAIN, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + await Promise.resolve(); + } +} \ No newline at end of file diff --git a/products/watch/src/main/module.json5 b/products/watch/src/main/module.json5 new file mode 100644 index 0000000..99c543c --- /dev/null +++ b/products/watch/src/main/module.json5 @@ -0,0 +1,51 @@ +{ + "module": { + "name": "watch", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "WatchAbility", + "deviceTypes": [ + "wearable", + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "routerMap": "$profile:router_map", + "abilities": [ + { + "name": "WatchAbility", + "srcEntry": "./ets/watchability/WatchAbility.ets", + "description": "$string:WatchAbility_desc", + "icon": "$media:layered_image", + "label": "$string:WatchAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "ohos.want.action.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "WatchBackupAbility", + "srcEntry": "./ets/watchbackupability/WatchBackupAbility.ets", + "type": "backup", + "exported": false, + "metadata": [ + { + "name": "ohos.extension.backup", + "resource": "$profile:backup_config" + } + ], + } + ] + } +} \ No newline at end of file diff --git a/products/watch/src/main/resources/base/element/color.json b/products/watch/src/main/resources/base/element/color.json new file mode 100644 index 0000000..834cb89 --- /dev/null +++ b/products/watch/src/main/resources/base/element/color.json @@ -0,0 +1,36 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "font_color", + "value": "#F6F5F6" + }, + { + "name": "text_color", + "value": "#767674" + }, + { + "name": "home_icon_background", + "value": "#FC1B46" + }, + { + "name": "home_btn_background", + "value": "#2A2A29" + }, + { + "name": "playlist_color_one", + "value": "#4C5363" + }, + { + "name": "playlist_color_two", + "value": "#5D544D" + }, + { + "name": "play_singer_color", + "value": "#BAAEAD" + } + ] +} \ No newline at end of file diff --git a/products/watch/src/main/resources/base/element/float.json b/products/watch/src/main/resources/base/element/float.json new file mode 100644 index 0000000..58ea5f8 --- /dev/null +++ b/products/watch/src/main/resources/base/element/float.json @@ -0,0 +1,84 @@ +{ + "float": [ + { + "name": "home_font_size", + "value": "18vp" + }, + { + "name": "home_icon_width", + "value": "45vp" + }, + { + "name": "home_icon_jump_width", + "value": "16vp" + }, + { + "name": "home_icon_padding", + "value": "6vp" + }, + { + "name": "home_btn_space", + "value": "10vp" + }, + { + "name": "home_btn_height", + "value": "66vp" + }, + { + "name": "list_btn_padding", + "value": "10vp" + }, + { + "name": "playlist_padding", + "value": "6vp" + }, + { + "name": "playlist_icon", + "value": "30vp" + }, + { + "name": "playlist_img_border_radius", + "value": "12vp" + }, + { + "name": "playlist_margin", + "value": "4vp" + }, + { + "name": "playlist_row_padding", + "value": "16vp" + }, + { + "name": "play_song_img", + "value": "36vp" + }, + { + "name": "play_icon_width", + "value": "24vp" + }, + { + "name": "play_circle_img", + "value": "90vp" + }, + { + "name": "play_progress_width", + "value": "100vp" + }, + { + "name": "play_column_padding", + "value": "16vp" + }, + { + "name": "volume_icon_width", + "value": "15vp" + }, + { + "name": "volume_icon_right", + "value": "22vp" + }, + { + "name": "volume_icon_top", + "value": "60vp" + } + ] +} diff --git a/products/watch/src/main/resources/base/element/string.json b/products/watch/src/main/resources/base/element/string.json new file mode 100644 index 0000000..874b5aa --- /dev/null +++ b/products/watch/src/main/resources/base/element/string.json @@ -0,0 +1,48 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "WatchAbility_desc", + "value": "description" + }, + { + "name": "WatchAbility_label", + "value": "label" + }, + { + "name": "home_hottest_playlists", + "value": "hottest_playlists" + }, + { + "name": "home_my_favorite", + "value": "My Favorite" + }, + { + "name": "home_is_playing", + "value": "Is Playing" + }, + { + "name": "home_setting", + "value": "Setting" + }, + { + "name": "playlist_name_one", + "value": "Popular Playlists" + }, + { + "name": "playlist_name_two", + "value": "Exercise Music" + }, + { + "name": "playlist_title_one", + "value": "New independent singer-songwriter" + }, + { + "name": "playlist_title_two", + "value": "Pleasant jogging " + } + ] +} \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/chevron_right.svg b/products/watch/src/main/resources/base/media/chevron_right.svg new file mode 100644 index 0000000..8dc4eb7 --- /dev/null +++ b/products/watch/src/main/resources/base/media/chevron_right.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/download.svg b/products/watch/src/main/resources/base/media/download.svg new file mode 100644 index 0000000..71509bd --- /dev/null +++ b/products/watch/src/main/resources/base/media/download.svg @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/full_screen.svg b/products/watch/src/main/resources/base/media/full_screen.svg new file mode 100644 index 0000000..ae7f22c --- /dev/null +++ b/products/watch/src/main/resources/base/media/full_screen.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/hottest_playlists.svg b/products/watch/src/main/resources/base/media/hottest_playlists.svg new file mode 100644 index 0000000..27c8c75 --- /dev/null +++ b/products/watch/src/main/resources/base/media/hottest_playlists.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/is_playing.svg b/products/watch/src/main/resources/base/media/is_playing.svg new file mode 100644 index 0000000..45111b3 --- /dev/null +++ b/products/watch/src/main/resources/base/media/is_playing.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/layered_image.json b/products/watch/src/main/resources/base/media/layered_image.json new file mode 100644 index 0000000..fb49920 --- /dev/null +++ b/products/watch/src/main/resources/base/media/layered_image.json @@ -0,0 +1,7 @@ +{ + "layered-image": + { + "background" : "$media:background", + "foreground" : "$media:foreground" + } +} \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/my_favorite.svg b/products/watch/src/main/resources/base/media/my_favorite.svg new file mode 100644 index 0000000..837bf06 --- /dev/null +++ b/products/watch/src/main/resources/base/media/my_favorite.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/next_btn.svg b/products/watch/src/main/resources/base/media/next_btn.svg new file mode 100644 index 0000000..873a96a --- /dev/null +++ b/products/watch/src/main/resources/base/media/next_btn.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/pause_btn.svg b/products/watch/src/main/resources/base/media/pause_btn.svg new file mode 100644 index 0000000..6b93176 --- /dev/null +++ b/products/watch/src/main/resources/base/media/pause_btn.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/play_btn.svg b/products/watch/src/main/resources/base/media/play_btn.svg new file mode 100644 index 0000000..78098f4 --- /dev/null +++ b/products/watch/src/main/resources/base/media/play_btn.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/play_btn_fill.svg b/products/watch/src/main/resources/base/media/play_btn_fill.svg new file mode 100644 index 0000000..0b00427 --- /dev/null +++ b/products/watch/src/main/resources/base/media/play_btn_fill.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/products/watch/src/main/resources/base/media/playlist_bg1.png b/products/watch/src/main/resources/base/media/playlist_bg1.png new file mode 100644 index 0000000000000000000000000000000000000000..3743af2116d88ad8ec06725c6b48db252106b8e4 GIT binary patch literal 594747 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

xqcie-_wz^G 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

YF8dZxd?5`2oumtj=kDs}>^!)J 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