在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【Purple Pi OH RK3566 Harmony開發板】OpenHarmony音頻播放應用

觸覺智能 ? 2023-09-14 08:35 ? 次閱讀

01注意事項

DevEco Studio 4.0 Beta2(Build Version: 4.0.0.400)

OpenHarmony SDK API 9

創建工程類型選擇Application

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

02工程概述

PPI有聲是一款基于OpenHarmony API 9 開發的,運行于Purple Pi 開發板(安裝OpenHarmony標準系統)的音頻播放應用程序。

03場景化

智慧家居類(電子門鈴,溫濕度顯示儀,屏顯燈控開關等)

智慧辦公類(打卡機,大屏顯示等)

智慧教育類(電子班牌,校園大屏,電子講臺等)

04創建工程

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

Project name:工程名稱

Bundle name:包名

Save location:工程存儲路徑

Compile SDK:編譯API版本

Compatible SDK:兼容的最新API版本

Module name:模塊名稱

Model:模型

Enable Super Visual:是否啟用低代碼開發

Device Type:設備類型

Node:nodejs路徑

05媒體服務

媒體子系統為開發者提供一套簡單且易于理解的接口,使得開發者能夠方便接入系統使用系統的媒體資源。

媒體子系統包含了音視頻相關媒體業務,提供以下常用共功能:

音視頻播放(AVPlayer)

音視頻錄制(AVRecorder)


5.1 AVPlayer概述

AVPlayer主要工作是將Audio/Video媒體資源(比如mp4/mp3/mkv/mpeg-ts等)轉碼為可供渲染的圖像或可聽見的模擬信號,并通過輸出設備進行播放。

使用AVPlayer可以實現端到端播放原始媒體資源,播放對的全流程包含:創建AVPlayer,設置播放資源,設置播放參數 (音量/倍速/焦點模式),播放控制(播放/暫停/跳轉/停止),重置,銷毀資源。

開發過程中開發者可以通過AVPlayer的state屬性主動獲取當前狀態或使用on('stateChange')方法監聽狀態變化。若應用在音頻播放器處于錯誤狀態時執行操作,系統可能會拋出異常或生成其他未定義的行為。

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

主:當播放處于prepared/playing/paused/completed狀態時,播放引擎處于工作狀態,需要占用系統較多的運行內容。當客戶端暫時不適用播放器時,調用reset()或release()回收內存資源。

5.2開發步驟

導入media模塊,調用createAVPlayer()方法創建AVPlayer實例,AVPlayer初始化idle狀態。

設置業務監聽事件,搭配全流程場景使用,如監聽播放器state屬性改變的stateChange;監聽播放器錯誤信息的error;用于進度條,監聽進度條長度,刷新資源時長的durationUpdate等。

設置資源:設置屬性url,AVPlayer進入initialized狀態

準備播放:調用prepare(),AVPlayer進入prepared狀態,此時可以獲取duration,設置音量。

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

調用reset()重置資源,AVPlayer重新進入idle狀態,此時可更換播放源url。

調用release()銷毀實例,AVPlayer進入released狀態,退出播放。

06構建PPI有聲

6.1 準備資源文件

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

將拷貝到resources/base/mdiea目錄

音頻播放背景圖audio_bg.png

音頻播放旋轉圖audio.png

暫停ic_pause.svg

播放ic_play.svg

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

6.2 構建UI頁面

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

6.2.1 可旋轉的音頻播放控件

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

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 進度條

播放進度由置于上部的播放時長和總時長,底部的播放進度條組成,包裹在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)
// 播放進度條
Slider({
value:this.currentProgress,
min:0,
max:this.duration,
style: SliderStyle.OutSet
})
.showTips(true)
.onChange((value: number, mode: SliderChangeMode) => {
this.currentProgress =value;
// 跳轉到指定位置播放
this.avPlayer.seek(value);
})
}
.width('90%')

6.2.3 播放控件

播放控件通過當前AVPlayer的狀態判斷顯示播放/暫停圖標按鈕。

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 實現音頻播放

6.3.1 初始化AVPlayer

// 播放音頻AVPlayer實例
privateavPlayer: media.AVPlayer = undefined;

// 初始化AVPlayer
asyncinitAVPlayer(){
// 創建AVPlayer實例對象
this.avPlayer =awaitmedia.createAVPlayer();
// 創建狀態機變化回調函數
this.setAVPlayerCallback();

awaitthis.loadingResourceFile();
}

6.3.2 加載HAP包資源文件

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

6.3.3 注冊AVPlayer回調函數

// 注冊AVPlayer回調函數
setAVPlayerCallback =()=>{
// 狀態機變化回調函數
// state:表示當前播放狀態
// reason:表示當前播放狀態的切換原因
this.avPlayer.on('stateChange',async(state, reason) => {
this.state =this.avPlayer.state;
switch(state) {
case'initialized':
this.avPlayer.prepare().then(()=>{
// 音頻播放準備完畢后,獲取音頻總時長
this.duration =this.avPlayer.duration;
})
break;
case'prepared':
// 開始播放
this.avPlayer.play().then(()=>{
// 設置圖標開始旋轉
this.angleNum =360;
})
break;
}
})

// 播放錯誤回調函數
this.avPlayer.on('error',(err) =>{
console.error(`Error happened. Cause:${JSON.stringify(err)}`);
})
// 監聽資源播放當前時間回調函數
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效果預覽

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 音頻
    +關注

    關注

    29

    文章

    2884

    瀏覽量

    81657
  • 開發板
    +關注

    關注

    25

    文章

    5081

    瀏覽量

    97692
  • OpenHarmony
    +關注

    關注

    25

    文章

    3728

    瀏覽量

    16395
  • Harmony
    +關注

    關注

    0

    文章

    53

    瀏覽量

    2617
收藏 人收藏

    評論

    相關推薦

    OpenHarmony源碼編譯后燒錄鏡像教程,RK3566鴻蒙開發板演示

    本文介紹瑞芯微主板/開發板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺智能Purple Pi OH鴻蒙
    的頭像 發表于 12-30 10:08 ?110次閱讀
    <b class='flag-5'>OpenHarmony</b>源碼編譯后燒錄鏡像教程,<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>演示

    OpenHarmony怎么修改DPI密度值?觸覺智能RK3566鴻蒙開發板演示

    開源鴻蒙OpenHarmony系統下,修改DPI密度值的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,搭載了瑞芯微
    的頭像 發表于 12-24 11:46 ?210次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?觸覺智能<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>演示

    瑞芯微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示

    本文介紹瑞芯微方案主板/開發板Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566
    的頭像 發表于 12-13 11:40 ?250次閱讀
    瑞芯微主板/<b class='flag-5'>開發板</b>Linux系統<b class='flag-5'>播放音頻</b>方法,觸覺智能<b class='flag-5'>RK</b>3562<b class='flag-5'>開發板</b>演示

    OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發板來演示

    本文介紹開源鴻蒙OpenHarmony系統下,修改產品屬性信息的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新
    的頭像 發表于 11-27 09:31 ?192次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?觸覺智能<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>來演示

    如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發板演示

    本文介紹開源鴻蒙OpenHarmony系統下,開啟/關閉SELinux權限的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新
    的頭像 發表于 11-18 19:03 ?368次閱讀
    如何在開源鴻蒙<b class='flag-5'>OpenHarmony</b>開啟SELinux模式?<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>演示

    瑞芯微RK3566/RK3568 Android11下該如何默認屏蔽導航欄/狀態欄?看這篇文章就懂了

    本文介紹瑞芯微RK3566/RK3568在Android11系統默認屏蔽導航欄/狀態欄方法,觸覺智能的Purple Pi OH鴻蒙
    的頭像 發表于 10-30 18:26 ?512次閱讀
    瑞芯微<b class='flag-5'>RK3566</b>/<b class='flag-5'>RK</b>3568 Android11下該如何默認屏蔽導航欄/狀態欄?看這篇文章就懂了

    觸覺智能Purple Pi OH鴻蒙開發板成功適配OpenHarmony5.0 Release,開啟新征程

    觸覺智能Purple Pi OH鴻蒙開發板,成功適配OpenHarmony5.0 Release版本!為大家帶來
    的頭像 發表于 10-25 10:51 ?424次閱讀
    觸覺智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>鴻蒙<b class='flag-5'>開發板</b>成功適配<b class='flag-5'>OpenHarmony</b>5.0 Release,開啟新征程

    瑞芯微RK3566/RK3568 Android11使用OTA升級固件方法,深圳觸覺智能鴻蒙開發板演示,備戰第九屆華為ICT大賽

    本文介紹瑞芯微RK3566/RK3568在Android11系統OTA升級固件方法,使用觸覺智能的Purple Pi OH鴻蒙
    的頭像 發表于 10-12 11:57 ?553次閱讀
    瑞芯微<b class='flag-5'>RK3566</b>/<b class='flag-5'>RK</b>3568 Android11使用OTA升級固件方法,深圳觸覺智能鴻蒙<b class='flag-5'>開發板</b>演示,備戰第九屆華為ICT大賽

    開源鴻蒙OpenHarmony系統更換開機Logo方法,RK3566鴻蒙開發板備戰第九屆華為ICT大賽

    本文適用開源鴻蒙OpenHarmony系統更換開機Logo,本次使用了觸覺智能的Purple Pi OH鴻蒙開源主板,搭載了瑞芯微RK3566
    的頭像 發表于 09-26 09:18 ?744次閱讀
    開源鴻蒙<b class='flag-5'>OpenHarmony</b>系統更換開機Logo方法,<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>備戰第九屆華為ICT大賽

    OpenHarmony4.0系統修改屏幕旋轉方法,RK3566鴻蒙開發板備戰第九屆華為ICT大賽

    本文提供OpenHarmony4.0系統豎屏修改為旋轉時的操作方法,本次使用了觸覺智能的Purple Pi OH鴻蒙開源主板,搭載了瑞芯微RK356
    的頭像 發表于 09-25 00:29 ?539次閱讀
    <b class='flag-5'>OpenHarmony</b>4.0系統修改屏幕旋轉方法,<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>備戰第九屆華為ICT大賽

    瑞芯微RK3566鴻蒙開發板Android11修改第三方輸入法為默認輸入法

    本文適用于觸覺智能所有支持Android11系統的開發板修改第三方輸入法為默認輸入法。本次使用的是觸覺智能的Purple Pi OH鴻蒙開源主板,搭載了瑞芯微
    的頭像 發表于 09-24 09:43 ?481次閱讀
    瑞芯微<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>Android11修改第三方輸入法為默認輸入法

    瑞芯微RK3566鴻蒙開發板OpenHarmony標準系統應用兼容性測試指導

    本文OpenHarmony標準系統應用兼容性測試指導,適用鴻蒙系統軟件開發測試的新手入門學習課程,設備為觸覺智能的瑞芯微RK3566開發板,型號Pu
    的頭像 發表于 09-10 11:56 ?412次閱讀
    瑞芯微<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b><b class='flag-5'>OpenHarmony</b>標準系統應用兼容性測試指導

    瑞芯微RK3566鴻蒙開發板Ubuntu虛擬機環境搭建教程,觸覺智能Purple Pi OH主板

    本文適用于Ubuntu虛擬機環境搭建教程學習,設備為觸覺智能開發的瑞芯微RK3566開發板,型號Purple Pi
    的頭像 發表于 09-08 18:25 ?1160次閱讀
    瑞芯微<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>Ubuntu虛擬機環境搭建教程,觸覺智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>主板

    瑞芯微RK3566鴻蒙開發板Ubuntu虛擬機環境搭建教程,觸覺智能Purple Pi OH主板

    本文適用于Ubuntu虛擬機環境搭建教程學習,設備為觸覺智能開發的瑞芯微RK3566開發板,型號Purple Pi
    的頭像 發表于 09-05 17:47 ?335次閱讀
    瑞芯微<b class='flag-5'>RK3566</b>鴻蒙<b class='flag-5'>開發板</b>Ubuntu虛擬機環境搭建教程,觸覺智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>主板

    適合大學生的鴻蒙開發板-Purple Pi OH之安裝Docker

    介紹本文基于purple-pi-oh系列主板演示Linux系統安裝Docker,方法適用于RK3566全系列產品。本教程將指導你在基于RK3566的LInux系統上安裝Docker。Docker是一
    的頭像 發表于 05-10 08:32 ?621次閱讀
    適合大學生的鴻蒙<b class='flag-5'>開發板</b>-<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>之安裝Docker
    主站蜘蛛池模板: 国产成人av在线| 波多野结衣在线网址| 特黄特色的视频免费播放| 综合色区| 亚洲成电影| 色偷偷资源| 男女交性拍拍拍高清视频| 另类视频色综合| 国产乱码精品一区二区| 最新激情网站| 久久精品国波多野结衣| 1024手机免费看| 亚洲欧美视频一区二区| 老师叫我揉她内裤越快越好| 永久免费看www色视频| 网红和老师啪啪对白清晰| 日本wwwwww| 国产精品虐乳在线播放| 午夜影视免费观看| 久久草在线免费| 中文字幕第二区| 亚洲天堂不卡| 欧美艹逼视频| aaaaaa级特色特黄的毛片| 日韩黄网| 又粗又大又猛又爽免费视频 | 国产 日韩 欧美 高清| 婷婷五月天.com| 51精品视频免费国产专区| 美女被异性狂揉下部羞羞视频 | 性色小视频| 欧美xxxx色视频在线观看| www资源| 久久天天躁狠狠躁夜夜爽| 69hdxxxx日本| 天天色影| 国产农村一级特黄α真人毛片 | 黄色四虎影院| 天天干天天舔天天操| 成人啪啪免费视频| 性欧美大战久久久久久久久|