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

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) 用于存儲媒體標題等信息。
setString(String key, String value) 用于存儲媒體作者、藝術(shù)家、描述等。
setLong(String key, long value) 用于存儲媒體 ID、媒體時長等信息。
setPixelMap(String key, PixelMap value) 用于存儲媒體元數(shù)據(jù)相關(guān)的圖片資源。
build() 媒體元數(shù)據(jù)生成函數(shù)。
接口名 功能描述
hasKey(String key) 媒體元數(shù)據(jù)中是否包含某一個 key 的數(shù)據(jù)。
getText(String key) 獲取 text 類型的 key 的數(shù)據(jù),比如獲取媒體標題等信息。
getString(String key) 獲取 String 類型 key 的數(shù)據(jù),比如獲取媒體作者、藝術(shù)家、描述等。
getLong(String key) 獲取 Long 類型 key 數(shù)據(jù),比如獲取媒體 ID、媒體時長等信息。
getKeysSet() 獲取媒體元數(shù)據(jù)的集合。
getPixelMap(String key) 獲取 PixelMap 類型 key 數(shù)據(jù),獲取媒體元數(shù)據(jù)相關(guān)的圖片資源。
marshalling(Parcel in) 將一個 AVMetadata 對象寫入到 Parcel 對象。
getAVDescription() 獲取媒體的簡要描述信息。

開發(fā)步驟

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

   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 對象,可以獲取媒體元數(shù)據(jù)信息,如獲取媒體標題等,代碼示例如下:

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

  1. 我們需要結(jié)合 AVSession 使用,將已有的媒體元數(shù)據(jù) AVMetadata 對象下發(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();
           // 獲取標題
           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)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號