国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS開發(fā)案例:【音樂播放器】

這篇具有很好參考價值的文章主要介紹了HarmonyOS開發(fā)案例:【音樂播放器】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

介紹

使用ArkTS語言實現(xiàn)了一個簡易的音樂播放器應(yīng)用,主要包含以下功能:

  1. 播放應(yīng)用中的音頻資源文件,并可進行上一曲、下一曲、播放、暫停、切換播放模式(順序播放、單曲循環(huán)、隨機播放)等操作。
  2. 結(jié)合后臺任務(wù)管理模塊,實現(xiàn)熄屏后繼續(xù)播放音頻。

HarmonyOS開發(fā)案例:【音樂播放器】,鴻蒙開發(fā),harmonyos,typescript,openharmony,鴻蒙開發(fā),鴻蒙系統(tǒng),移動開發(fā),程序員

相關(guān)概念

  • [AVPlayer]:AVPlayer主要工作是將Audio/Video媒體資源轉(zhuǎn)碼為可供渲染的圖像和可聽見的音頻模擬信號,并通過輸出設(shè)備進行播放,同時對播放任務(wù)進行管理,包括開始播放、暫停播放、停止播放、釋放資源、設(shè)置音量、跳轉(zhuǎn)播放位置、獲取軌道信息等功能控制。
  • [后臺任務(wù)管理]:針對應(yīng)用或業(yè)務(wù)模塊處于后臺(無可見界面)時,有需要繼續(xù)執(zhí)行或者后續(xù)執(zhí)行的業(yè)務(wù),可基于業(yè)務(wù)類型,申請短時任務(wù)延遲掛起或者長時任務(wù)避免進入掛起狀態(tài);如后臺播放音樂可使用長時任務(wù)避免進入掛起狀態(tài)。
  • 鴻蒙開發(fā)指導(dǎo)文檔:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md點擊或者復(fù)制轉(zhuǎn)到。

約束與限制

  1. 本篇Codelab部分能力依賴于系統(tǒng)API,需下載full-SDK并替換DevEco Studio自動下載的public-SDK。具體操作可參考指南[《如何替換full-SDK》]。
  2. 本篇Codelab使用的部分API僅系統(tǒng)應(yīng)用可用,需要提升應(yīng)用等級。

環(huán)境搭建

軟件要求

  • [DevEco Studio]版本:DevEco Studio 3.1 Release。
  • OpenHarmony SDK版本:API version 9。

硬件要求

  • 開發(fā)板類型:[潤和RK3568開發(fā)板]。
  • OpenHarmony系統(tǒng):3.2 Release。

環(huán)境搭建

完成本篇Codelab我們首先要完成開發(fā)環(huán)境的搭建,本示例以RK3568開發(fā)板為例,參照以下步驟進行:

  1. [獲取OpenHarmony系統(tǒng)版本]:標(biāo)準系統(tǒng)解決方案(二進制)。以3.2 Release版本為例:

    HarmonyOS開發(fā)案例:【音樂播放器】,鴻蒙開發(fā),harmonyos,typescript,openharmony,鴻蒙開發(fā),鴻蒙系統(tǒng),移動開發(fā),程序員

  2. 搭建燒錄環(huán)境。

    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開發(fā)板的燒錄]
  3. 搭建開發(fā)環(huán)境。

    1. 開始前請參考[工具準備],完成DevEco Studio的安裝和開發(fā)環(huán)境配置。
    2. 開發(fā)環(huán)境配置完成后,請參考[使用工程向?qū)創(chuàng)建工程(模板選擇“Empty Ability”)。
    3. 工程創(chuàng)建完成后,選擇使用[真機進行調(diào)測]。
    4. HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

HarmonyOS開發(fā)案例:【音樂播放器】,鴻蒙開發(fā),harmonyos,typescript,openharmony,鴻蒙開發(fā),鴻蒙系統(tǒng),移動開發(fā),程序員

代碼結(jié)構(gòu)解讀

本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在gitee中提供。

├──entry/src/main/ets               // 代碼區(qū)
│  ├──common              
│  │  ├──constants                   
│  │  │  └──CommonConstants.ets     // 公共常量
│  │  ├──model                   
│  │  │  └──PlayBarModel            // 播放欄數(shù)據(jù)模型
│  │  └──utils
│  │     ├──AvSessionUtil.ets  	    // 媒體會話工具類	
│  │     ├──BackgroundTaskUtil.ets  // 后臺任務(wù)工具類
│  │     ├──CommonUtil.ets  	    // 公共工具類	
│  │     ├──GlobalContext.ets  	    // 公共工具類	
│  │     ├──Logger.ets              // 日志類          
│  │     └──ResourceManagerUtil.ets // 資源管理工具類
│  ├──controller           
│  │  ├──AudioPlayerController.ets  // 音樂播放器控制器
│  │  └──PlayBarController.ets      // 播放欄控制器
│  ├──entryability                    
│  │  └──EntryAbility.ets           // 程序入口類
│  ├──pages                          
│  │  ├──AudioStartUp.ets           // 啟動頁
│  │  ├──MusicList.ets              // 歌單頁
│  │  └──Play.ets                   // 播放頁
│  ├──view                         
│  │  ├──MusicCardView.ets          // 播放卡片模塊
│  │  ├──MusicView.ets              // 歌單音樂模塊
│  │  ├──PlayBarView.ets            // 播放控制模塊
│  │  ├──PlayListDialogView.ets     // 彈窗模塊
│  │  ├──PlayListMusicView.ets      // 彈窗音樂模塊
│  │  └──ProgressView.ets           // 播放頁
│  └──viewmodel  
│     ├──MusicItem.ets              // 音樂類
│     └──MusicViewModel.ets         // 歌單音樂模型
└──entry/src/main/resources         // 應(yīng)用資源目錄

實現(xiàn)音頻播放

本案例使用播放管理類AVPlayer,實現(xiàn)應(yīng)用內(nèi)音頻資源的播放,并可進行上一曲、下一曲、播放、暫停、切換播放模式(順序播放、單曲循環(huán)、隨機播放)等操作。

HarmonyOS開發(fā)案例:【音樂播放器】,鴻蒙開發(fā),harmonyos,typescript,openharmony,鴻蒙開發(fā),鴻蒙系統(tǒng),移動開發(fā),程序員

使用AVPlayer播放器,需要先創(chuàng)建一個AVPlayer實例。在AudioPlayerController中使用createAVPlayer方法完成音頻播放實例的創(chuàng)建。

// AudioPlayerController.ets
initAudioPlayer() {
  media.createAVPlayer((error, video) => {
    if (video === undefined) {
      this.avPlayer = video;
      Logger.error(TAG, `createAVPlayer fail, error: ${error}`);
    } else {
      this.avPlayer = video;
      Logger.info(TAG, 'createAVPlayer success');
    }
  });
}

根據(jù)業(yè)務(wù)需要設(shè)置監(jiān)聽事件,搭配播放場景使用。

// AudioPlayerController.ets
// 注冊AVPlayer回調(diào)函數(shù)
setEventCallBack() {
  ...
  // 狀態(tài)變更回調(diào)函數(shù)。
  this.avPlayer.on('stateChange', async (state) => {
    ...
    switch (state) {
      case StateEvent.IDLE: // 調(diào)用reset成功后觸發(fā)此狀態(tài)。
        ...
      case StateEvent.INITIALIZED: // 設(shè)置播放源觸發(fā)此狀態(tài)。
        ...
      case StateEvent.PREPARED:
        ...
      case StateEvent.PLAYING:
        ...
      case StateEvent.COMPLETED:
        ...
      default:
        Logger.error('unknown state: ' + state);
        break;
    }
  })
}  

設(shè)置音頻資源,AVPlayer進入initialized狀態(tài)。在initialized狀態(tài)回調(diào)中,調(diào)用prepare方法,準備播放,AVPlayer進入prepared狀態(tài)。

// AudioPlayerController.ets
async play(src: media.AVFileDescriptor, seekTo: number) {
  Logger.info(TAG, 'audioPlayer play');
  ...
  // 設(shè)置播放源
  this.avPlayer.fdSrc = src;
}

setEventCallBack() {
  ...
  this.avPlayer.on('stateChange', async (state) => {
    ...
    switch (state) {
      ...
      case StateEvent.INITIALIZED:// 設(shè)置播放源后進入initialized狀態(tài)
        Logger.info(TAG, 'state initialized called');
        this.avPlayerState = PlayerState.INITIALIZED;
        this.avPlayer.prepare().then(() => {
          Logger.info(TAG, 'prepare success');
        }, (err) => {
          Logger.error(TAG, `prepare failed,error message is: ${err.message}`);
        })
        break;
      ...
    }
  })
}

AVPlayer進入prepared狀態(tài),可進行音頻播控操作。包括播放play()、跳轉(zhuǎn)至指定位置播放seek()、暫停pause()、停止stop()等操作。

// AudioPlayerController.ets
setEventCallBack() {
  ...
  this.avPlayer.on('stateChange', async (state) => {
    ...
    switch (state) {
      ...
      case StateEvent.PREPARED:
        Logger.info(TAG, 'state prepared called');
        this.avPlayer.play();
        break;
      ...
    }
  })
}

切換歌曲播放時,需調(diào)用reset()重置資源。此時AVPlayer重新進入idle狀態(tài),允許更換資源。

// AudioPlayerController.ets
async play(src: media.AVFileDescriptor, seekTo: number) {
  ...
  if (this.avPlayerState === PlayerState.INITIALIZED) {
    await this.avPlayer.reset();
    Logger.info(TAG, 'play reset success');
  }
  ...
}

HarmonyOS開發(fā)案例:【音樂播放器】,鴻蒙開發(fā),harmonyos,typescript,openharmony,鴻蒙開發(fā),鴻蒙系統(tǒng),移動開發(fā),程序員?說明: ?只能在initialized/prepared/playing/paused/complete/stopped/error狀態(tài)調(diào)用reset()。

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

// AudioPlayerController.ets
async release() {
  Logger.info(TAG, 'audioPlayer release');
  if (typeof (this.avPlayer) !== 'undefined') {
    if (this.timeId === CommonConstants.DEFAULT_TIME_ID) {
      clearInterval(this.timeId);
    }
    await this.avPlayer.release();
    this.avPlayer = undefined;
  }
}

實現(xiàn)熄屏后播放

通過后臺任務(wù)管理模塊申請長時任務(wù),可避免設(shè)備熄屏后,應(yīng)用進入掛起狀態(tài)。

HarmonyOS開發(fā)案例:【音樂播放器】,鴻蒙開發(fā),harmonyos,typescript,openharmony,鴻蒙開發(fā),鴻蒙系統(tǒng),移動開發(fā),程序員

首先在module.json5文件中配置長時任務(wù)權(quán)限和后臺模式類型。

"module": {
  ...
  "abilities": [
    {
      ...
      "backgroundModes": [
        "audioPlayback"
      ],
      ...
    }
  ],
  "requestPermissions": [
    {
      "name": "ohos.permission.KEEP_BACKGROUND_RUNNING"
    }
  ],
}

在播放音樂時,申請長時任務(wù)。這樣在應(yīng)用切換至后臺或設(shè)備熄屏后,仍可以繼續(xù)播放音樂。

// BackgroundTaskUtil.ets
import wantAgent from '@ohos.app.ability.wantAgent';
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
...
export class BackgroundTaskUtil {
  ...
  public static startContinuousTask(context: Context) {
    if (context === undefined) {
      Logger.info(TAG, 'startContinuousTask fail,context is empty.');
      return;
    }
    let wantAgentInfo = {
      // 點擊通知后需要執(zhí)行的動作
      wants: [
        {
          bundleName: CommonConstants.BUNDLE_NAME,
          abilityName: CommonConstants.ABILITY_NAME
        }
      ],
      // 單擊通知后的動作類型
      operationType: wantAgent.OperationType.START_ABILITY,
      // 用戶定義的私有屬性
      requestCode: CommonConstants.BACKGROUND_REQUEST_CODE
    } as wantAgent.WantAgentInfo;

    // 通過WanAgent模塊的方法獲取WanAgent對象
    wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
      try {
        backgroundTaskManager.startBackgroundRunning(context, backgroundTaskManager.BackgroundMode.AUDIO_PLAYBACK,
          wantAgentObj).then(() => {
          Logger.info(TAG, 'startBackgroundRunning succeeded');
        }).catch((err: Error) => {
          Logger.error(TAG, 'startBackgroundRunning failed, Cause: ' + JSON.stringify(err));
        });
      } catch (error) {
        Logger.error(TAG, `startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
      }
    });
  }
  ...
}

暫停音樂播放,結(jié)束長時任務(wù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-856993.html

// BackgroundTaskUtil.ets
import wantAgent from '@ohos.app.ability.wantAgent';
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
...
export class BackgroundTaskUtil {
  ...
  public static stopContinuousTask(context: Context) {
    if (context === undefined) {
      Logger.info(TAG, 'stopContinuousTask fail,context is empty.');
      return;
    }
    try {
      backgroundTaskManager.stopBackgroundRunning(context).then(() => {
        Logger.info(TAG, 'stopBackgroundRunning succeeded');
      }).catch((err: Error) => {
        Logger.error(TAG, 'stopBackgroundRunning failed Cause: ' + JSON.stringify(err));
      });
    } catch (error) {
      Logger.error(TAG, `stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
    }
  }
}

到了這里,關(guān)于HarmonyOS開發(fā)案例:【音樂播放器】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 小項目開發(fā)——Android 音樂播放器

    小項目開發(fā)——Android 音樂播放器

    ? 音樂播放器 . ? 要求 : Activity 編程、 ListView 編程、 SeekBar 編程、 ExoPlayer 編程( 播放 、 暫停 、 停止 、 上一首 、 下一首 ),音樂文件放在 assets/music 目錄下,界面自擬. ? 期望最終效果: ? 分別對應(yīng) activity_music_list.xml 、 activity_my_music_player.xml 的視圖. ? 點擊列表任

    2024年01月21日
    瀏覽(27)
  • 嵌入式Qt 開發(fā)一個音樂播放器

    嵌入式Qt 開發(fā)一個音樂播放器

    上篇文章:RK3568源碼編譯與交叉編譯環(huán)境搭建,進行了OK3568開發(fā)板軟件開發(fā)環(huán)境搭建,通過編譯RK3568的源碼,可以得到Qt開發(fā)的交叉編譯相關(guān)工具。 本篇,就來在搭建好的軟件開發(fā)中,進行Qt軟件的開發(fā)測試。由于Qt是支持跨平臺的,因此本篇的音樂播放器,先在Windows上編寫

    2024年02月02日
    瀏覽(41)
  • Android手機開發(fā)課程設(shè)計之音樂播放器

    Android手機開發(fā)課程設(shè)計之音樂播放器

    一、音樂播放器概述與分析 目前手機的音樂播放功能已經(jīng)是大家比較關(guān)注的一個部分,不少在人在購買手機的時候都會關(guān)心手機的音樂播放的能力,這也足以看出目前大家對音樂播放功能的重視,所以一款性能良好的手機音樂播放器軟件一定會受到歡迎。和傳統(tǒng)的音樂播放器

    2024年02月05日
    瀏覽(20)
  • 基于Arduino Uno開發(fā)板制作音樂播放器

    基于Arduino Uno開發(fā)板制作音樂播放器

    1.Arduino開發(fā)板 Arduino Uno 是一款基于 Microchip ATmega328P 微控制器的開源微控制器板,由 Arduino.cc 開發(fā),最初于 2010 年發(fā)布。該板配備了一組數(shù)字和模擬輸入/輸出 (I/O) 引腳,可以連接到各種擴展板(屏蔽)和其他電路。 該板具有 14 個數(shù)字 I/O 引腳(6 個能夠進行 PWM 輸出)、6 個

    2024年02月16日
    瀏覽(25)
  • IOS開發(fā)之——音樂播放器-資源和Model(02)

    音樂播放器資源文件 資源文件轉(zhuǎn)換為對應(yīng)的Model類 2.1 圖片資源 Images.xcassets(啟動圖標(biāo)/播放按鈕/默認背景等) 2.2 Resources(歌曲資源) Images(音樂大圖) Lrcs(音樂歌詞文件) MP3s(本地歌曲文件) Musics.plist(所有歌詞信息,轉(zhuǎn)換為HMMusic Model) 2.3 查看Copy Bundle Resources Targets——Build Phases——

    2023年04月12日
    瀏覽(19)
  • iOS開發(fā)Swift-4-IBAction,group,音樂播放器-木琴App

    iOS開發(fā)Swift-4-IBAction,group,音樂播放器-木琴App

    1.使用素材創(chuàng)建木琴App的UI。 ?2.連接IBAction。 ?其余按鈕直接拖拽到play里邊。 ?當(dāng)鼠標(biāo)置于1處時2處顯示如圖,表示成功。當(dāng)用戶按下任一按鈕都會觸發(fā)play中的內(nèi)容。 ?3.將7個按鈕的View中的Tag值分別調(diào)為1、2、3、4、5、6、7. ?4.將音頻文件拖入項目文件中。 ?Create groups時,實

    2024年02月10日
    瀏覽(27)
  • 基于微信小程序的音樂播放器的設(shè)計與開發(fā)(源碼+lw+部署文檔+講解等)

    基于微信小程序的音樂播放器的設(shè)計與開發(fā)(源碼+lw+部署文檔+講解等)

    ?? 博主介紹 :?新人博主,工作經(jīng)驗兩年+、專注于Java、小程序技術(shù)領(lǐng)域和畢業(yè)項目實戰(zhàn)??? ??文末獲取源碼+數(shù)據(jù)庫?? 感興趣的可以先收藏起來,還有大家在畢設(shè)選題,項目以及論文編寫等相關(guān)問題都可以給我留言咨詢,希望幫助更多的人 隨著移動互聯(lián)網(wǎng)的快速發(fā)展,音

    2024年02月04日
    瀏覽(25)
  • Android 音樂播放器

    Android 音樂播放器

    ? 音樂播放器 . ? 要求 : Activity 編程、 ListView 編程、 SeekBar 編程、 ExoPlayer 編程( 播放 、 暫停 、 停止 、 上一首 、 下一首 ),音樂文件放在 assets/music 目錄下,界面自擬. ? 期望最終效果: ? 分別對應(yīng) activity_music_list.xml 、 activity_my_music_player.xml 的視圖. ? 點擊列表任

    2024年02月03日
    瀏覽(27)
  • 開源音樂播放器!

    開源音樂播放器!

    導(dǎo)讀 音樂是生活的一部分。維基百科關(guān)于音樂發(fā)展歷史的文章有這樣一段不錯的描述說:“全世界所有的人們,包括哪怕是最孤立、與世隔絕的部落,都會有自己的特色音樂……”好吧,我們開源人就構(gòu)成了一個部落。我建議我們的“音樂形式”應(yīng)該包括開源音樂播放器。

    2024年02月08日
    瀏覽(22)
  • 學(xué)習(xí)筆記(1)——粵嵌gec6818實現(xiàn)電子相冊,音樂播放器,視頻播放器。

    學(xué)習(xí)筆記(1)——粵嵌gec6818實現(xiàn)電子相冊,音樂播放器,視頻播放器。

    (1)設(shè)計一個初始界面,并且設(shè)置電子相冊,音樂播放器,視頻播放器三個觸摸按鍵。 (2)電子相冊——能夠?qū)崿F(xiàn)相冊的幻燈片功能,實現(xiàn)相冊左右滑動切換相片。 (3)音樂播放器實現(xiàn)——切歌,播放和暫停功能。 (4)視頻播放器實現(xiàn)——播放、暫停、音量大小、快進倒

    2024年02月11日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包