Launch 擴充功能

媒體 API 參考 - 建立媒體追蹤器

建立追蹤器前,您應先透過行動核心註冊媒體擴充功能與相依擴充功能。

// Register the extension once during app launch
try {
    // Media needs Identity and Analytics extension
    // to function properly
    Identity.registerExtension();
    Analytics.registerExtension();

    // Initialize media extension.
    Media.registerExtension();
    MobileCore.start(new AdobeCallback () {
        @Override
        public void call(Object o) {
            // Launch mobile property to pick extension settings.
            MobileCore.configureWithAppID("LAUNCH_MOBILE_PROPERTY");
        }
    });
} catch (InvalidInitException ex) {
    ...
}

註冊媒體擴充功能後,請使用以下 API 建立追蹤器。
追蹤器會自動從已設定的啟動屬性中挑選設定。

Media.createTracker(new AdobeCallback<MediaTracker>() {
    @Override
    public void call(MediaTracker tracker) {
        // Use the instance for tracking media.
    }
});

更新播放點和體驗品質值。

獨立 Media SDK

在獨立 Media SDK 中,實作 MediaHeartbeartDelegate 介面的委派物件會在建立追蹤器時傳遞。當追蹤器呼叫 getQoSObject()getCurrentPlaybackTime() 介面方法時,實作應傳回最新的 QoE 和播放點。

Launch 擴充功能

實作應呼叫追蹤器公開的 updateCurrentPlayhead 方法,
以更新目前播放器播放點。您應每秒至少呼叫一次此方法以精確追蹤。

媒體 API 參考 - 更新目前的播放器

實作應呼叫追蹤器公開的 updateQoEObject 方法,
以更新 QoE 資訊。我們預期當品質量度發生變更時,
會呼叫此方法。

媒體 API 參考 - 更新 QoE 物件

傳遞標準媒體 / 廣告中繼資料

獨立 Media SDK

  • 標準媒體中繼資料:

    MediaObject mediaInfo =
      MediaHeartbeat.createMediaObject("media-name",
                                       "media-id",
                                       60D,
                                       MediaHeartbeat.StreamType.VOD,
                                       MediaHeartbeat.MediaType.Video);
    
    // Standard metadata keys provided by adobe.
    Map <String, String> standardVideoMetadata =
      new HashMap<String, String>();
    standardVideoMetadata.put(MediaHeartbeat.VideoMetadataKeys.EPISODE,
                              "Sample Episode");
    standardVideoMetadata.put(MediaHeartbeat.VideoMetadataKeys.SHOW,
                              "Sample Show");
    standardVideoMetadata.put(MediaHeartbeat.VideoMetadataKeys.SEASON,
                              "Sample Season");
    mediaInfo.setValue(MediaHeartbeat.MediaObjectKey.StandardMediaMetadata,
                       standardVideoMetadata);
    
    // Custom metadata keys
    HashMap<String, String> mediaMetadata = new HashMap<String, String>();
    mediaMetadata.put("isUserLoggedIn", "false");
    mediaMetadata.put("tvStation", "Sample TV Station");
    tracker.trackSessionStart(mediaInfo, mediaMetadata);
    
  • 標準廣告中繼資料:

    MediaObject adInfo =
      MediaHeartbeat.createAdObject("ad-name",
                                    "ad-id",
                                    1L,
                                    15D);
    
    // Standard metadata keys provided by adobe.
    Map <String, String> standardAdMetadata =
      new HashMap<String, String>();
    standardAdMetadata.put(MediaHeartbeat.AdMetadataKeys.ADVERTISER,
                           "Sample Advertiser");
    standardAdMetadata.put(MediaHeartbeat.AdMetadataKeys.CAMPAIGN_ID,
                           "Sample Campaign");
    adInfo.setValue(MediaHeartbeat.MediaObjectKey.StandardAdMetadata,
                    standardAdMetadata);
    
    HashMap<String, String> adMetadata =
      new HashMap<String, String>();
    adMetadata.put("affiliate",
                   "Sample affiliate");
    
    tracker.trackEvent(MediaHeartbeat.Event.AdStart,
                       adObject,
                       adMetadata);