添加 AVPlayer
This commit is contained in:
parent
09b129fe5a
commit
aea18f9da9
@ -99,7 +99,7 @@ struct Index {
|
|||||||
rightMenuType: TitleBarMenuType.None
|
rightMenuType: TitleBarMenuType.None
|
||||||
}).width('100%')
|
}).width('100%')
|
||||||
|
|
||||||
Column() {
|
Column({space: 8}) {
|
||||||
Row() {
|
Row() {
|
||||||
Button("WebDialog").width(100).height('100%').type(ButtonType.Normal)
|
Button("WebDialog").width(100).height('100%').type(ButtonType.Normal)
|
||||||
.onClick(async () => {
|
.onClick(async () => {
|
||||||
@ -113,9 +113,15 @@ struct Index {
|
|||||||
Button("Animation").width(100).height('100%').type(ButtonType.Normal).onClick(() => {
|
Button("Animation").width(100).height('100%').type(ButtonType.Normal).onClick(() => {
|
||||||
router.pushUrl({ url: "pages/animation/CompTransitionPage" });
|
router.pushUrl({ url: "pages/animation/CompTransitionPage" });
|
||||||
});
|
});
|
||||||
|
}.width('100%').height(48).justifyContent(FlexAlign.SpaceEvenly)
|
||||||
|
|
||||||
|
Row() {
|
||||||
|
Button("AVPlayer").width(100).height('100%').type(ButtonType.Normal).onClick(() => {
|
||||||
|
router.pushUrl({ url: "pages/media/AVPlayerPage" });
|
||||||
|
});
|
||||||
|
|
||||||
}.width('100%').height(48).justifyContent(FlexAlign.SpaceEvenly)
|
}.width('100%').height(48).justifyContent(FlexAlign.SpaceEvenly)
|
||||||
}.justifyContent(FlexAlign.Center).width('100%')
|
}.width('100%')
|
||||||
}.width('100%').height('100%')
|
}.width('100%').height('100%')
|
||||||
}
|
}
|
||||||
}
|
}
|
73
app/src/main/ets/pages/media/AVPlayerPage.ets
Normal file
73
app/src/main/ets/pages/media/AVPlayerPage.ets
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
|
||||||
|
import media from '@ohos.multimedia.media';
|
||||||
|
import Prompt from '@system.prompt';
|
||||||
|
@Entry
|
||||||
|
@Component
|
||||||
|
struct AVPlayerPage{
|
||||||
|
|
||||||
|
setAVPlayerCallback(avPlayer: media.AVPlayer) {
|
||||||
|
// error回调监听函数,当avPlayer在操作过程中出现错误时调用reset接口触发重置流程
|
||||||
|
avPlayer.on('error', (err) => {
|
||||||
|
console.error(`Invoke avPlayer failed, code is ${err.code}, message is ${err.message}`);
|
||||||
|
avPlayer.reset(); // 调用reset重置资源,触发idle状态
|
||||||
|
})
|
||||||
|
// 状态机变化回调函数
|
||||||
|
avPlayer.on('stateChange', async (state, reason) => {
|
||||||
|
switch (state) {
|
||||||
|
case 'idle': // 成功调用reset接口后触发该状态机上报
|
||||||
|
console.info('AVPlayer state idle called.');
|
||||||
|
break;
|
||||||
|
case 'initialized': // avplayer 设置播放源后触发该状态上报
|
||||||
|
console.info('AVPlayerstate initialized called.');
|
||||||
|
avPlayer.prepare().then(() => {
|
||||||
|
Prompt.showToast({
|
||||||
|
message: '加载成功'
|
||||||
|
})
|
||||||
|
console.info('AVPlayer prepare succeeded.');
|
||||||
|
}, () => {
|
||||||
|
console.error(`Invoke prepare failed, code is , message is`);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'prepared': // prepare调用成功后上报该状态机
|
||||||
|
console.info('AVPlayer state prepared called.');
|
||||||
|
avPlayer.play(); // 调用播放接口开始播放
|
||||||
|
break;
|
||||||
|
case 'playing': // play成功调用后触发该状态机上报
|
||||||
|
console.info('AVPlayer state playing called.');
|
||||||
|
break;
|
||||||
|
case 'paused': // pause成功调用后触发该状态机上报
|
||||||
|
console.info('AVPlayer state paused called.');
|
||||||
|
break;
|
||||||
|
case 'completed': // 播放结束后触发该状态机上报
|
||||||
|
console.info('AVPlayer state completed called.');
|
||||||
|
avPlayer.stop(); //调用播放结束接口
|
||||||
|
break;
|
||||||
|
case 'stopped': // stop接口成功调用后触发该状态机上报
|
||||||
|
console.info('AVPlayer state stopped called.');
|
||||||
|
avPlayer.reset(); // 调用reset接口初始化avplayer状态
|
||||||
|
break;
|
||||||
|
case 'released':
|
||||||
|
console.info('AVPlayer state released called.');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.info('AVPlayer state unknown called.');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
Column(){
|
||||||
|
Button('播放').height(48).width(96)
|
||||||
|
.onClick(()=>{
|
||||||
|
this.playMusic();
|
||||||
|
})
|
||||||
|
}.justifyContent(FlexAlign.Center).align(Alignment.Center).width('100%').height('100%')
|
||||||
|
}
|
||||||
|
|
||||||
|
async playMusic() {
|
||||||
|
let avPlayer: media.AVPlayer = await media.createAVPlayer();
|
||||||
|
this.setAVPlayerCallback(avPlayer);
|
||||||
|
avPlayer.url = "https://www.yyq.cn/audio/audiomp3/f//0b/71f/f0b71f1f52d8cc9b4238e5a1f61a7a0a.mp3"
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@
|
|||||||
"pages/Index",
|
"pages/Index",
|
||||||
"pages/web/WebPage",
|
"pages/web/WebPage",
|
||||||
"pages/layout/LinearLayoutPage",
|
"pages/layout/LinearLayoutPage",
|
||||||
"pages/animation/CompTransitionPage"
|
"pages/animation/CompTransitionPage",
|
||||||
|
"pages/media/AVPlayerPage"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user