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
liyubing
2024-06-05 18:46:58 +0800
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
e7e72684a70e0fa73fb7b4cc4240b240f3bdabf6
e7e72684
2 parents
be846bcf
218d15a9
Merge remote-tracking branch 'origin/main'
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
58 additions
and
37 deletions
sight_harmony/features/wdComponent/src/main/ets/components/MorningEveningPaper/MorningEveningPaperComponent.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/AudioSuspensionModel.ets
sight_harmony/features/wdPlayer/src/main/ets/controller/WDPlayerController.ets
sight_harmony/products/phone/src/main/ets/entryability/EntryAbility.ets
sight_harmony/products/phone/src/main/ets/pages/view/AudioComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/MorningEveningPaper/MorningEveningPaperComponent.ets
View file @
e7e7268
...
...
@@ -27,6 +27,7 @@ import TrackingPageBrowseUtils from '../../utils/TrackingPageBrowseUtils'
import {TrackConstants,TrackParamConvert}from 'wdTracking/Index'
import { ColorUtils } from '../../utils/ColorUtils';
import { EmptyComponent,WDViewDefaultType } from '../view/EmptyComponent';
import { EmitterEventId, EmitterUtils } from 'wdKit/Index'
const TAG = 'MorningEveningPaperComponent';
...
...
@@ -71,6 +72,7 @@ export struct MorningEveningPaperComponent {
@State bottomSafeHeight: number = 0;
@State isHasTopView: boolean = false;
@State scrollOffset: number = 0
@State currentStatus: number | string |undefined = 0;
private audioDataList: AudioDataList[] = []
private playerController: WDPlayerController = new WDPlayerController();
...
...
@@ -182,6 +184,10 @@ export struct MorningEveningPaperComponent {
}
EmitterUtils.receiveEvent(EmitterEventId.AUDIO_CHANGE_STATUS, (val: number | string | undefined) => {
this.currentStatus = val
})
}
// 批量查询内容当前用户点赞、收藏状态评论个数
...
...
@@ -338,7 +344,7 @@ export struct MorningEveningPaperComponent {
.height('100%')
.objectFit(ImageFit.Contain)
Image(
$r('app.media.ic_red_triangle'
))
Image(
this.currentStatus === PlayerConstants.STATUS_START ? $r("app.media.icon_audio_pause") : $r("app.media.icon_audio_playing"
))
.width(24)
.height(24)
.margin({ left: 10 })// .alignSelf(ItemAlign.Center)
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/AudioSuspensionModel.ets
View file @
e7e7268
...
...
@@ -16,6 +16,7 @@ export class AudioSuspensionModel {
private url: string = ''
private expandWidth: number = vp2px(243)
private expandHeight: number = vp2px(60)
private initMoveX = vp2px(12)
// 窗口是否最小化
private isMinimize: SubscribedAbstractProperty<boolean> = AppStorage.link<boolean>('isMinimize')
constructor() {
...
...
@@ -27,7 +28,7 @@ export class AudioSuspensionModel {
private initPlayerController() {
if(this.playerController === undefined) {
Logger.info(TAG, 'playerController undefined')
AppStorage.setOrCreate('playerController', new WDPlayerController());
AppStorage.setOrCreate('playerController', new WDPlayerController(
{loop: false}
));
this.playerController = AppStorage.link<WDPlayerController>('playerController')
Logger.info(TAG, 'playerController create success')
this.playerController.get().onStatusChange = (status: number) => {
...
...
@@ -42,8 +43,8 @@ export class AudioSuspensionModel {
* 配置音频地址
*/
public setPlayerUrl(url: string, srcTitle: string) {
// console.log(TAG,'this.url', this.url)
// console.log(TAG,'url', url)
/*console.log(TAG,'this.url', this.url)
console.log(TAG,'url', url)*/
if (this.url === url) {
this.isMinimize = AppStorage.link<boolean>('isMinimize')
console.log(TAG, 'this.isMinimize', this.isMinimize?.get())
...
...
@@ -60,7 +61,7 @@ export class AudioSuspensionModel {
}
this.srcTitle = srcTitle
EmitterUtils.sendEvent(EmitterEventId.AUDIO_CHANGE_TITLe, this.srcTitle)
this.resizeWindow(this.expandWidth, this.expandHeight
)
EmitterUtils.sendEvent(EmitterEventId.AUDIO_WINDOW_EXPAND, 1
)
}
this.showWindow()
}
...
...
@@ -99,9 +100,8 @@ export class AudioSuspensionModel {
console.info(TAG, 'floatWindowClass Succeeded in changing the window size.');
});
}
public moveWindow(y: number) {
this.floatWindowClass.get().moveWindowTo(0, vp2px(y), (err: BusinessError) => {
public moveWindow(y: number) {
this.floatWindowClass.get().moveWindowTo(this.initMoveX, vp2px(y), (err: BusinessError) => {
let errCode: number = err.code;
if (errCode) {
console.error('floatWindowClass Failed to move the window. Cause:' + JSON.stringify(err));
...
...
sight_harmony/features/wdPlayer/src/main/ets/controller/WDPlayerController.ets
View file @
e7e7268
...
...
@@ -7,13 +7,17 @@ import { TrackingPlay } from 'wdTracking/Index';
import { ParamType } from 'wdTracking/Index';
import { DateTimeUtils } from 'wdKit/Index';
interface obj {
loop: boolean
}
@Observed
export class WDPlayerController {
private initPromise: Promise<void>;
private avPlayer?: media.AVPlayer;
private duration: number = 0;
private status: number = PlayerConstants.STATUS_IDLE;
private loop: boolean =
fals
e;
private loop: boolean =
tru
e;
private url: string = '';
private surfaceId: string = ''; // 若播放音频,无需设置surfaceId
private playSpeed: number = 1;
...
...
@@ -41,9 +45,12 @@ export class WDPlayerController {
constructor() {
constructor(
obj?: obj
) {
Logger.error("初始化")
this.initPromise = this.createAVPlayer();
if(obj?.loop === false) {
this.loop = false
}
}
/**
...
...
@@ -103,6 +110,7 @@ export class WDPlayerController {
if (this.onCanplay) {
this.onCanplay()
}
this.avPlayer.loop = this.loop
break;
case AVPlayerStatus.PLAYING:
if(this.onLoaded) {
...
...
@@ -122,9 +130,13 @@ export class WDPlayerController {
if (this.continue) {
this.continue();
} else {
this.duration = 0;
this.url = this.avPlayer.url || '';
this.avPlayer.reset();
if(this.loop) {
this.duration = 0;
this.url = this.avPlayer.url || '';
this.avPlayer.reset();
}
this.status = PlayerConstants.STATUS_COMPLETION;
this.watchStatus();
}
break;
case AVPlayerStatus.RELEASED:
...
...
@@ -396,7 +408,7 @@ export class WDPlayerController {
watchStatus() {
console.log('watchStatus', this.status)
if(this.status ==
1
){
if(this.status ==
PlayerConstants.STATUS_START
){
console.log('播放视频')
console.log('播放视频prepareTime',JSON.stringify(this.prepareTime))
console.log('播放视频pageName',JSON.stringify(this.pageName))
...
...
@@ -404,7 +416,7 @@ export class WDPlayerController {
// 播放埋点
TrackingPlay.videoPositivePlay(Number(this.prepareTime),this.pageName, this.pageName, this.pageParam)
}
if(this.status ==
2
){
if(this.status ==
PlayerConstants.STATUS_COMPLETION
){
let initDuration = Math.floor(Number(this.duration)/1000)
console.log('播放结束')
console.log('播放结束currentPlayTime',JSON.stringify(this.currentPlayTime))
...
...
sight_harmony/products/phone/src/main/ets/entryability/EntryAbility.ets
View file @
e7e7268
...
...
@@ -57,8 +57,9 @@ export default class EntryAbility extends UIAbility {
AppStorage.setOrCreate('topSafeHeight', topSafeHeight);
AppStorage.setOrCreate('windowWidth', width);
AppStorage.setOrCreate('windowHeight', height);
// 音频悬浮窗初始移动位置604为ui高度
let initMoveY = vp2px(604)
// 音频悬浮窗初始移动位置604为ui高度, 下面的初始位置根据mate60 pro手动调整
let initMoveY = vp2px(576)
let initMoveX = vp2px(12)
this.onWindowSetup(windowClass)
...
...
@@ -81,7 +82,7 @@ export default class EntryAbility extends UIAbility {
floatWindowClass = data;
AppStorage.setOrCreate('floatWindowClass', floatWindowClass);
// 2.悬浮窗窗口创建成功后,设置悬浮窗的位置、大小及相关属性等。
floatWindowClass.moveWindowTo(
0
, initMoveY, (err: BusinessError) => {
floatWindowClass.moveWindowTo(
initMoveX
, initMoveY, (err: BusinessError) => {
let errCode: number = err.code;
if (errCode) {
Logger.error('floatWindowClass Failed to move the window. Cause:' + JSON.stringify(err));
...
...
sight_harmony/products/phone/src/main/ets/pages/view/AudioComponent.ets
View file @
e7e7268
...
...
@@ -40,11 +40,11 @@ struct Index {
EmitterUtils.receiveEvent(EmitterEventId.AUDIO_CHANGE_STATUS, (val: number | string | undefined) => {
// val 2 pause
if(val === 2) {
console.log(TAG,'this.currentStatus 2 ', val)
if(val === PlayerConstants.STATUS_PAUSE || val === PlayerConstants.STATUS_COMPLETION) {
console.log(TAG,'AUDIO_CHANGE_STATUS this.currentStatus 2 ', val)
lottie.pause(this.name)
} else if(val === 1) {
console.log(TAG,'this.currentStatus 1 ', val)
} else if(val === PlayerConstants.STATUS_START) {
console.log(TAG,'AUDIO_CHANGE_STATUS this.currentStatus 1 ', val)
lottie.play(this.name)
}
this.currentStatus = val
...
...
@@ -76,7 +76,7 @@ struct Index {
build() {
Stack({ alignContent: Alignment.End }) {
if(this.isExpand
) {
Stack({ alignContent: Alignment.End }
) {
Column() { //标题 时间 进度条
Marquee({
start: true,
...
...
@@ -156,21 +156,23 @@ struct Index {
}
.width(80)
.height(60)
} else {
Row() {
LottieView({
name: this.name,
path: "lottie/audio_animation_playing.json",
lottieWidth: 24,
lottieHeight: 24,
autoplay: false,
loop: true
})
}
.justifyContent(FlexAlign.Center)
.width(60)
.height(60)
}
.visibility(this.isExpand ? Visibility.Visible : Visibility.Hidden)
Row() {
LottieView({
name: this.name,
path: "lottie/audio_animation_playing.json",
lottieWidth: 24,
lottieHeight: 24,
autoplay: false,
loop: true
})
}
.justifyContent(FlexAlign.Center)
.width(60)
.height(60)
.visibility(!this.isExpand ? Visibility.Visible : Visibility.Hidden)
}
.parallelGesture(
GestureGroup(GestureMode.Parallel,
...
...
Please
register
or
login
to post a comment