鴻蒙OS 媒體元數(shù)據(jù)開發(fā)指導(dǎo)

2020-09-18 14:15 更新

場景介紹

媒體元數(shù)據(jù)主要用于媒體數(shù)據(jù)的存放和讀取,包含諸如媒體資源的描述、創(chuàng)建日期、作者、封面圖片等等。

接口說明

接口名 功能描述
Builder() 媒體元數(shù)據(jù)構(gòu)造器的構(gòu)造函數(shù)。
Builder(AVMetadata source) 媒體元數(shù)據(jù)構(gòu)造器的帶參構(gòu)造函數(shù)。
setText(String key, CharSequence value) 用于存儲(chǔ)媒體標(biāo)題等信息。
setString(String key, String value) 用于存儲(chǔ)媒體作者、藝術(shù)家、描述等。
setLong(String key, long value) 用于存儲(chǔ)媒體 ID、媒體時(shí)長等信息。
setPixelMap(String key, PixelMap value) 用于存儲(chǔ)媒體元數(shù)據(jù)相關(guān)的圖片資源。
build() 媒體元數(shù)據(jù)生成函數(shù)。
接口名 功能描述
hasKey(String key) 媒體元數(shù)據(jù)中是否包含某一個(gè) key 的數(shù)據(jù)。
getText(String key) 獲取 text 類型的 key 的數(shù)據(jù),比如獲取媒體標(biāo)題等信息。
getString(String key) 獲取 String 類型 key 的數(shù)據(jù),比如獲取媒體作者、藝術(shù)家、描述等。
getLong(String key) 獲取 Long 類型 key 數(shù)據(jù),比如獲取媒體 ID、媒體時(shí)長等信息。
getKeysSet() 獲取媒體元數(shù)據(jù)的集合。
getPixelMap(String key) 獲取 PixelMap 類型 key 數(shù)據(jù),獲取媒體元數(shù)據(jù)相關(guān)的圖片資源。
marshalling(Parcel in) 將一個(gè) AVMetadata 對(duì)象寫入到 Parcel 對(duì)象。
getAVDescription() 獲取媒體的簡要描述信息。

開發(fā)步驟

  1. 調(diào)用 AVMetadata.Builder 類的 build 方法創(chuàng)建 AVMetadata 實(shí)例。代碼示例如下:

   AVMetadata avMetadata = new AVMetadata.Builder().setString(AVMetadata.AVTextKey.MEDIA_ID, "illuminate.mp3")
                     .setString(AVMetadata.AVTextKey.TITLE, "title")
                     .setString(AVMetadata.AVTextKey.ARTIST, "artist")
                     .setString(AVMetadata.AVTextKey.ALBUM, "album")
                     .setString(AVMetadata.AVTextKey.DISPLAY_SUBTITLE, "display_subtitle")
                     .setPixelMap(AVMetadata.AVPixelMapKey.DISPLAY_ICON_URI, pixelmap)
                     .build();

  1. (可選)根據(jù)已有的 AVMetadata 對(duì)象,可以獲取媒體元數(shù)據(jù)信息,如獲取媒體標(biāo)題等,代碼示例如下:

   String title = avMetadata.getString(AVMetadata.AVTextKey.TITLE); 

  1. 我們需要結(jié)合 AVSession 使用,將已有的媒體元數(shù)據(jù) AVMetadata 對(duì)象下發(fā)給應(yīng)用,具體參考 AVSession 使用,示例如下:

   mediaSession.setAVMetadata(avMetadata);

  1. 應(yīng)用獲取媒體元數(shù)據(jù)一般結(jié)合 AVControllerCallback 相關(guān)類使用,通過 onAVMetadataChanged 回調(diào)獲取媒體元數(shù)據(jù)。

   public class Callback extends AVControllerCallback {
       @Override
       public void onAVMetadataChanged(AVMetadata metadata) {
           // 歌曲信息回調(diào)
           AVDescription description = metadata.getAVDescription();
           // 獲取標(biāo)題
           String title = description.getTitle().toString();
           CharSequence sequence = metadata.getText(AVMetadata.AVTextKey.TITLE);
           if (sequence != null) {
               title = metadata.getText(AVMetadata.AVTextKey.TITLE).toString();
           }
           // 設(shè)置媒體title
           musicTitle.setText(title);
           // 獲取曲目專封面
           PixelMap iconPixelMap = description.getIcon();
           // 設(shè)置歌曲封面圖
           musicCover.setPixelMap(iconPixelMap);
       }
   }
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)