国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【Purple Pi OH RK3566 Harmony開(kāi)發(fā)板】OpenHarmony音頻播放應(yīng)用

觸覺(jué)智能 ? 2023-09-14 08:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

01注意事項(xiàng)

DevEco Studio 4.0 Beta2(Build Version: 4.0.0.400)

OpenHarmony SDK API 9

創(chuàng)建工程類(lèi)型選擇Application

修改entry/build-profile.json5配置文件中的targets>runtimeOS為OpenHarmony,然后進(jìn)行Sync Now(同步)

02工程概述

PPI有聲是一款基于OpenHarmony API 9 開(kāi)發(fā)的,運(yùn)行于Purple Pi 開(kāi)發(fā)板(安裝OpenHarmony標(biāo)準(zhǔn)系統(tǒng))的音頻播放應(yīng)用程序。

03場(chǎng)景化

智慧家居類(lèi)(電子門(mén)鈴,溫濕度顯示儀,屏顯燈控開(kāi)關(guān)等)

智慧辦公類(lèi)(打卡機(jī),大屏顯示等)

智慧教育類(lèi)(電子班牌,校園大屏,電子講臺(tái)等)

04創(chuàng)建工程

6f931fc8-5296-11ee-a20b-92fbcf53809c.png

Project name:工程名稱(chēng)

Bundle name:包名

Save location:工程存儲(chǔ)路徑

Compile SDK:編譯API版本

Compatible SDK:兼容的最新API版本

Module name:模塊名稱(chēng)

Model:模型

Enable Super Visual:是否啟用低代碼開(kāi)發(fā)

Device Type:設(shè)備類(lèi)型

Node:nodejs路徑

05媒體服務(wù)

媒體子系統(tǒng)為開(kāi)發(fā)者提供一套簡(jiǎn)單且易于理解的接口,使得開(kāi)發(fā)者能夠方便接入系統(tǒng)使用系統(tǒng)的媒體資源。

媒體子系統(tǒng)包含了音視頻相關(guān)媒體業(yè)務(wù),提供以下常用共功能:

音視頻播放(AVPlayer)

音視頻錄制(AVRecorder)


5.1 AVPlayer概述

AVPlayer主要工作是將Audio/Video媒體資源(比如mp4/mp3/mkv/mpeg-ts等)轉(zhuǎn)碼為可供渲染的圖像或可聽(tīng)見(jiàn)的模擬信號(hào),并通過(guò)輸出設(shè)備進(jìn)行播放。

使用AVPlayer可以實(shí)現(xiàn)端到端播放原始媒體資源,播放對(duì)的全流程包含:創(chuàng)建AVPlayer,設(shè)置播放資源,設(shè)置播放參數(shù) (音量/倍速/焦點(diǎn)模式),播放控制(播放/暫停/跳轉(zhuǎn)/停止),重置,銷(xiāo)毀資源。

開(kāi)發(fā)過(guò)程中開(kāi)發(fā)者可以通過(guò)AVPlayer的state屬性主動(dòng)獲取當(dāng)前狀態(tài)或使用on('stateChange')方法監(jiān)聽(tīng)狀態(tài)變化。若應(yīng)用在音頻播放器處于錯(cuò)誤狀態(tài)時(shí)執(zhí)行操作,系統(tǒng)可能會(huì)拋出異?;蛏善渌炊x的行為。

6fb2b82e-5296-11ee-a20b-92fbcf53809c.png

主:當(dāng)播放處于prepared/playing/paused/completed狀態(tài)時(shí),播放引擎處于工作狀態(tài),需要占用系統(tǒng)較多的運(yùn)行內(nèi)容。當(dāng)客戶端暫時(shí)不適用播放器時(shí),調(diào)用reset()或release()回收內(nèi)存資源。

5.2開(kāi)發(fā)步驟

導(dǎo)入media模塊,調(diào)用createAVPlayer()方法創(chuàng)建AVPlayer實(shí)例,AVPlayer初始化idle狀態(tài)。

設(shè)置業(yè)務(wù)監(jiān)聽(tīng)事件,搭配全流程場(chǎng)景使用,如監(jiān)聽(tīng)播放器state屬性改變的stateChange;監(jiān)聽(tīng)播放器錯(cuò)誤信息的error;用于進(jìn)度條,監(jiān)聽(tīng)進(jìn)度條長(zhǎng)度,刷新資源時(shí)長(zhǎng)的durationUpdate等。

設(shè)置資源:設(shè)置屬性u(píng)rl,AVPlayer進(jìn)入initialized狀態(tài)

準(zhǔn)備播放:調(diào)用prepare(),AVPlayer進(jìn)入prepared狀態(tài),此時(shí)可以獲取duration,設(shè)置音量。

音頻播控:播放play(),暫停pause(),跳轉(zhuǎn)seek(),停止stop()等操作。

調(diào)用reset()重置資源,AVPlayer重新進(jìn)入idle狀態(tài),此時(shí)可更換播放源url。

調(diào)用release()銷(xiāo)毀實(shí)例,AVPlayer進(jìn)入released狀態(tài),退出播放。

06構(gòu)建PPI有聲

6.1 準(zhǔn)備資源文件

音頻文件拷貝到resources/rawfile目錄

將拷貝到resources/base/mdiea目錄

音頻播放背景圖audio_bg.png

音頻播放旋轉(zhuǎn)圖audio.png

暫停ic_pause.svg

播放ic_play.svg

6fc63f70-5296-11ee-a20b-92fbcf53809c.png

6.2 構(gòu)建UI頁(yè)面

整個(gè)UI以Flex彈性布局為主,子組件以列方式排列,分別為可旋轉(zhuǎn)的音頻播放控件,播放進(jìn)度條以及播放控制按鈕組成。

6.2.1 可旋轉(zhuǎn)的音頻播放控件

使用Stack堆疊布局容器為主,將旋轉(zhuǎn)控件置于背景圖之上。

Stack({alignContent: Alignment.Center }) {
Image($r('app.media.audio_bg'))
.width(200).height(200)
Image($r('app.media.audio'))
.width(100).height(100)
.backgroundColor(Color.White)
.borderRadius(50)
.rotate({angle: this.angleNum })
.animation({
duration: this.duration,
tempo:1,
curve: Curve.Linear,
iterations: -1,
playMode: PlayMode.Normal
})
}

6.2.2 進(jìn)度條

播放進(jìn)度由置于上部的播放時(shí)長(zhǎng)和總時(shí)長(zhǎng),底部的播放進(jìn)度條組成,包裹在Column列容器中。

Column({ space:4}) {
Row() {
Text(this.msToS(this.currentProgress))
.fontSize(12)
.fontColor(0xc1c3c5)
Text(this.msToS(this.duration))
.fontSize(12)
.fontColor(0xc1c3c5)
}
.width('100%')
.justifyContent(FlexAlign.SpaceBetween)
// 播放進(jìn)度條
Slider({
value:this.currentProgress,
min:0,
max:this.duration,
style: SliderStyle.OutSet
})
.showTips(true)
.onChange((value: number, mode: SliderChangeMode) => {
this.currentProgress =value;
// 跳轉(zhuǎn)到指定位置播放
this.avPlayer.seek(value);
})
}
.width('90%')

6.2.3 播放控件

播放控件通過(guò)當(dāng)前AVPlayer的狀態(tài)判斷顯示播放/暫停圖標(biāo)按鈕。

Row({ space:10}) {
if(this.state ==='playing') {
//暫停
Image($r('app.media.ic_pause'))
.width(64).height(64)
.fillColor(0xff5722)
.onClick(()=>{
//暫停播放
this.avPlayer.pause().then(()=>{
this.angleNum =0;
})
})
}else{
//播放
Image($r('app.media.ic_play'))
.width(64).height(64)
.fillColor(0x00aaee)
.onClick(async () => {
if(this.avPlayer &&this.avPlayer.state ==="paused") {
this.avPlayer.play().then(()=>{
this.angleNum =360;
})
}else{
awaitthis.initAVPlayer();
}
})
}
}
.width('100%')
.justifyContent(FlexAlign.Center)

6.3 實(shí)現(xiàn)音頻播放

6.3.1 初始化AVPlayer

// 播放音頻AVPlayer實(shí)例
privateavPlayer: media.AVPlayer = undefined;

// 初始化AVPlayer
asyncinitAVPlayer(){
// 創(chuàng)建AVPlayer實(shí)例對(duì)象
this.avPlayer =awaitmedia.createAVPlayer();
// 創(chuàng)建狀態(tài)機(jī)變化回調(diào)函數(shù)
this.setAVPlayerCallback();

awaitthis.loadingResourceFile();
}

6.3.2 加載HAP包資源文件

// 加載HAP包資源文件
loadingResourceFile =async() => {
// 通過(guò)UIAbilityContext的resourceManager成員的getRawFd接口獲取媒體資源播放地址
letcontext = getContext(this)ascommon.UIAbilityContext;
letfileDir =awaitcontext.resourceManager.getRawFd("audio.wav");
// 為fdSrc賦值觸發(fā)initialized狀態(tài)機(jī)上報(bào)
this.avPlayer.fdSrc = fileDir;
}

6.3.3 注冊(cè)AVPlayer回調(diào)函數(shù)

// 注冊(cè)AVPlayer回調(diào)函數(shù)
setAVPlayerCallback =()=>{
// 狀態(tài)機(jī)變化回調(diào)函數(shù)
// state:表示當(dāng)前播放狀態(tài)
// reason:表示當(dāng)前播放狀態(tài)的切換原因
this.avPlayer.on('stateChange',async(state, reason) => {
this.state =this.avPlayer.state;
switch(state) {
case'initialized':
this.avPlayer.prepare().then(()=>{
// 音頻播放準(zhǔn)備完畢后,獲取音頻總時(shí)長(zhǎng)
this.duration =this.avPlayer.duration;
})
break;
case'prepared':
// 開(kāi)始播放
this.avPlayer.play().then(()=>{
// 設(shè)置圖標(biāo)開(kāi)始旋轉(zhuǎn)
this.angleNum =360;
})
break;
}
})

// 播放錯(cuò)誤回調(diào)函數(shù)
this.avPlayer.on('error',(err) =>{
console.error(`Error happened. Cause:${JSON.stringify(err)}`);
})
// 監(jiān)聽(tīng)資源播放當(dāng)前時(shí)間回調(diào)函數(shù)
this.avPlayer.on('timeUpdate',(time:number) =>{
if(this.avPlayer.state ==='completed') {
this.currentProgress =0;
this.duration =0;
this.angleNum =0;
}else{
this.currentProgress = time;
}
})
}

07效果預(yù)覽

6fdb4424-5296-11ee-a20b-92fbcf53809c.png

7029b97e-5296-11ee-a20b-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 音頻
    +關(guān)注

    關(guān)注

    31

    文章

    3188

    瀏覽量

    85578
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6291

    瀏覽量

    118135
  • OpenHarmony
    +關(guān)注

    關(guān)注

    33

    文章

    3952

    瀏覽量

    21103
  • Harmony
    +關(guān)注

    關(guān)注

    0

    文章

    108

    瀏覽量

    3557
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    性能躍遷,鴻蒙開(kāi)發(fā)新紀(jì)元!凌羽派RK3566鴻蒙開(kāi)發(fā)板,開(kāi)啟全場(chǎng)景開(kāi)發(fā)之旅

    【導(dǎo)語(yǔ)】還在為鴻蒙開(kāi)發(fā)尋找強(qiáng)勁、穩(wěn)定、高效的硬件平臺(tái)?凌羽派RK3566鴻蒙開(kāi)發(fā)板震撼登場(chǎng)!集高性能、全接口、強(qiáng)生態(tài)于一身,專(zhuān)為鴻蒙開(kāi)發(fā)者、創(chuàng)客、企業(yè)與教育科研打造,助你輕松駕馭萬(wàn)物互
    的頭像 發(fā)表于 12-11 17:58 ?2432次閱讀
    性能躍遷,鴻蒙<b class='flag-5'>開(kāi)發(fā)</b>新紀(jì)元!凌羽派<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開(kāi)發(fā)板</b>,開(kāi)啟全場(chǎng)景<b class='flag-5'>開(kāi)發(fā)</b>之旅

    觸覺(jué)智能Purple Pi OH開(kāi)發(fā)板率先適配OpenHarmony6.0 Release,鴻蒙明星開(kāi)發(fā)板

    2025年9月19日,在官網(wǎng)上線開(kāi)源鴻蒙OpenHarmony6.0Release僅13天,觸覺(jué)智能宣布旗下PurplePiOH開(kāi)發(fā)板成功完成OpenHarmony6.0Release系統(tǒng)適配。這一
    的頭像 發(fā)表于 10-29 08:00 ?826次閱讀
    觸覺(jué)智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b><b class='flag-5'>開(kāi)發(fā)板</b>率先適配<b class='flag-5'>OpenHarmony</b>6.0 Release,鴻蒙明星<b class='flag-5'>開(kāi)發(fā)板</b>

    嘗鮮開(kāi)源鴻蒙6.0?試試明星開(kāi)發(fā)板Purple Pi OH

    6月19日,開(kāi)源鴻蒙官方發(fā)布了OpenHarmony6.0Beta1版本,觸覺(jué)智能緊隨其后,率先在PurplePiOH開(kāi)發(fā)板進(jìn)行適配
    的頭像 發(fā)表于 07-11 18:42 ?1572次閱讀
    嘗鮮開(kāi)源鴻蒙6.0?試試明星<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>

    【免費(fèi)試用】開(kāi)發(fā)板評(píng)測(cè)大賽開(kāi)啟!OH 、RISC-V、Rockchip頂級(jí)開(kāi)發(fā)板等你試用~

    OpenHarmony、RISC-V、Rockchip(下稱(chēng)RK)全面覆蓋前沿技術(shù)方向,等你用代碼與創(chuàng)意點(diǎn)燃科技未來(lái)!——點(diǎn)擊開(kāi)發(fā)板圖片立即申請(qǐng)————點(diǎn)擊開(kāi)發(fā)板圖片立即申請(qǐng)———
    的頭像 發(fā)表于 06-05 08:05 ?975次閱讀
    【免費(fèi)試用】<b class='flag-5'>開(kāi)發(fā)板</b>評(píng)測(cè)大賽開(kāi)啟!<b class='flag-5'>OH</b> 、RISC-V、Rockchip頂級(jí)<b class='flag-5'>開(kāi)發(fā)板</b>等你試用~

    四核RK3566多媒體控制技術(shù)分享(RK3566如何實(shí)現(xiàn)7個(gè)串口同時(shí)進(jìn)行)

    四核RK3566多媒體控制技術(shù)分享各位電子發(fā)燒友大家好!今天想和大家分享一款近期接觸到的四核RK3566多媒體控制(產(chǎn)品型號(hào):ZK-R36A),這款產(chǎn)品在工業(yè)控制和智能設(shè)備領(lǐng)域有不
    發(fā)表于 05-13 09:32

    基于小凌派RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小凌派-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的FLASH接口,進(jìn)行FLASH編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),實(shí)現(xiàn)FLASH讀寫(xiě)操作。例程源代碼:https
    的頭像 發(fā)表于 04-22 14:49 ?919次閱讀
    基于小凌派<b class='flag-5'>RK</b>2206<b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制FLASH外設(shè)

    基于小凌派RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制UART外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小凌派-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的UART接口,進(jìn)行UART編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置UART引腳,實(shí)現(xiàn)UART讀寫(xiě)操作。例程源代碼:https
    的頭像 發(fā)表于 04-22 14:22 ?1075次閱讀
    基于小凌派<b class='flag-5'>RK</b>2206<b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制UART外設(shè)

    基于小凌派RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小凌派-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO中斷模式,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置GPIO引腳為中斷模式,實(shí)現(xiàn)GPIO中斷操作。例程源代碼
    的頭像 發(fā)表于 04-21 10:39 ?1107次閱讀
    基于小凌派<b class='flag-5'>RK</b>2206<b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO中斷

    基于小凌派RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    1、案例簡(jiǎn)介本案例主要是如何在小凌派-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO接口,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置GPIO引腳,實(shí)現(xiàn)GPIO讀寫(xiě)操作。例程源代碼:https
    的頭像 發(fā)表于 04-11 15:36 ?2050次閱讀
    基于小凌派<b class='flag-5'>RK</b>2206<b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO外設(shè)

    基于小凌派RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制ADC外設(shè)

    1、案例簡(jiǎn)介本案例主要講解如何在小凌派-RK2206開(kāi)發(fā)板上使用IoT庫(kù)的ADC接口,進(jìn)行ADC編程開(kāi)發(fā)。例程內(nèi)容為創(chuàng)建一個(gè)任務(wù),讀取按鍵的ADC值,并打印到串口。例程源代碼:https
    的頭像 發(fā)表于 04-10 16:00 ?910次閱讀
    基于小凌派<b class='flag-5'>RK</b>2206<b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制ADC外設(shè)

    鴻蒙北向開(kāi)發(fā)OpenHarmony5.0 DevEco Studio開(kāi)發(fā)工具安裝與配置

    本文介紹OpenHarmony5.0 DevEco Studio開(kāi)發(fā)工具安裝與配置,鴻蒙北向開(kāi)發(fā)入門(mén)必備!由觸覺(jué)智能Purple Pi
    的頭像 發(fā)表于 03-28 18:05 ?1631次閱讀
    鴻蒙北向<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>OpenHarmony</b>5.0 DevEco Studio<b class='flag-5'>開(kāi)發(fā)</b>工具安裝與配置

    【北京迅為】iTOP-RK3568開(kāi)發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART

    【北京迅為】iTOP-RK3568開(kāi)發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART
    的頭像 發(fā)表于 03-25 11:02 ?1732次閱讀
    【北京迅為】iTOP-<b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)板</b>鴻蒙<b class='flag-5'>OpenHarmony</b>系統(tǒng)南向驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>實(shí)操-HDF驅(qū)動(dòng)配置UART

    請(qǐng)問(wèn)rk3566有沒(méi)有辦法裝安卓12

    各位老哥,rk3566的sdk是安卓11,有沒(méi)有辦法裝安卓12呢
    發(fā)表于 03-22 19:46

    OpenHarmony4.1系統(tǒng)WiFi藍(lán)牙打不開(kāi)時(shí),教你如何排查解決問(wèn)題

    本文介紹OpenHarmony4.1系統(tǒng)開(kāi)發(fā)板,出現(xiàn)打不開(kāi)WiFi和藍(lán)牙的問(wèn)題排查和解決方法。觸覺(jué)智能PurplePiOH鴻蒙開(kāi)發(fā)板演示,搭載了瑞芯微RK3566四核處理器,1TOPS
    的頭像 發(fā)表于 03-12 18:55 ?1028次閱讀
    <b class='flag-5'>OpenHarmony</b>4.1系統(tǒng)WiFi藍(lán)牙打不開(kāi)時(shí),教你如何排查解決問(wèn)題

    北京迅為RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京迅為RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
    的頭像 發(fā)表于 03-11 14:13 ?1858次閱讀
    北京迅為<b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>OpenHarmony</b>系統(tǒng)南向驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)