Show Menu
主题×

在 Android 中跟踪核心播放

本文档介绍 2.x 版本的 SDK 中的跟踪。如果您实施的是 1.x 版本的 SDK,可以在此处下载适用于 Android 的 1.x 开发人员指南: 下载 SDK
  1. 初始跟踪设置
    识别用户何时触发播放意图(用户点击“播放”和/或自动播放开启)并创建 MediaObject 实例。
    变量名称
    描述
    必需
    name
    媒体名称
    mediaId
    媒体唯一标识符
    length
    媒体长度
    streamType
    流类型(请参阅下面的 StreamType 常量
    mediaType
    媒体类型(请参阅下面的 MediaType 常量
    StreamType 常量:
    常量名称
    描述
    VOD
    点播视频的流类型。
    LIVE
    实时内容的流类型。
    LINEAR
    线性内容的流类型。
    AOD
    点播音频的流类型。
    AUDIOBOOK
    有声读物的流类型。
    PODCAST
    播客的流类型。
    MediaType 常量:
    常量名称
    描述
    Audio
    音频流的媒体类型。
    Video
    视频流的媒体类型。
    MediaHeartbeat.createMediaObject(<MEDIA_NAME>,  
      <MEDIA_ID>, <MEDIA_LENGTH>, <STREAM_TYPE>, <MEDIA_TYPE>);
    
    
  2. 附加元数据
    (可选)通过上下文数据变量将标准和/或自定义元数据对象附加到跟踪会话。
    • 标准元数据
      将标准元数据对象附加到媒体对象是可选的。
    • 自定义元数据
      为自定义变量创建字典,然后使用此媒体的数据进行填充。例如:
      HashMap<String, String> mediaMetadata =  
        new HashMap<String, String>(); 
      mediaMetadata.put("isUserLoggedIn", "false"); 
      mediaMetadata.put("tvStation", "Sample TV Station"); 
      mediaMetadata.put("programmer", "Sample programmer");
      
      
  3. 跟踪开始播放的意图
    要开始跟踪媒体会话,请在媒体心率实例中调用 trackSessionStart 。例如:
    public void onVideoLoad(Observable observable, Object data) {  
        _heartbeat.trackSessionStart(mediaInfo, mediaMetadata); 
    }
    
    
    第二个值是您在步骤 2 中创建的自定义媒体元数据对象名称。
    trackSessionStart 跟踪的是用户的播放意图,而不是播放的开始。此 API 用于加载媒体数据/元数据并评估开启 QoS 量度的时间( trackSessionStart trackPlay 之间的持续时间)。
    如果不使用自定义媒体元数据,则只需在 trackSessionStart 中为第二个参数发送一个空对象。
  4. 跟踪播放的实际开始事件
    识别媒体播放器中的媒体播放开始事件(媒体的第一帧呈现在屏幕上)并调用 trackPlay
    // Video is rendered on the screen) and call trackPlay.  
    public void onVideoPlay(Observable observable, Object data) { 
        _heartbeat.trackPlay(); 
    }
    
    
  5. 跟踪播放的结束事件
    识别媒体播放器中的媒体播放结束事件(用户一直观看至内容的结尾)并调用 trackComplete
    public void onVideoComplete(Observable observable, Object data) { 
        _heartbeat.trackComplete(); 
    }
    
    
  6. 跟踪会话的结束事件
    识别媒体播放器中的媒体播放卸载/关闭事件(用户关闭媒体和/或媒体已结束并卸载)并调用 trackSessionEnd
    // Closes the media and/or the media completed and unloaded,  
    // and call trackSessionEnd().  
    public void onMainVideoUnload(Observable observable, Object data) {  
        _heartbeat.trackSessionEnd(); 
    }
    
    
    trackSessionEnd 标记媒体跟踪会话的结尾。如果会话成功观看至结束(用户一直观看内容至结尾),请确保先调用 trackComplete ,之后再调用 trackSessionEnd 。在调用 trackSessionEnd 之后,任何其他 track* API 调用都将被忽略(除了用于新的媒体跟踪会话的 trackSessionStart 之外)。
  7. 跟踪所有可能的暂停方案
    识别媒体播放器中的媒体暂停事件并调用 trackPause
    public void onVideoPause(Observable observable, Object data) {  
        _heartbeat.trackPause(); 
    }
    
    
    暂停方案
    识别视频播放器将会暂停的任何方案,并确保正确调用了 trackPause 。以下方案均要求应用程序调用 trackPause()
    • 用户在应用程序中明确点击暂停。
    • 播放器自行进入暂停状态。
    • 移动设备应用程序 )- 用户将应用程序置于后台,但您希望应用程序保持会话打开。
    • 移动设备应用程序 )- 出现导致应用程序被置于后台的任何类型的系统中断。例如,用户接收到一个调用,或者出现来自其他应用程序的弹出窗口,但您希望应用程序将会话保持活动状态,以便用户有机会从中断点继续播放媒体。
  8. 识别播放器中的媒体播放事件和/或媒体在暂停后继续播放的事件并调用 trackPlay
    // trackPlay() 
    public void onVideoPlay(Observable observable, Object data) {  
        _heartbeat.trackPlay(); 
    }
    
    
    这可能与步骤 4 中所使用的事件源相同。请确保当媒体播放继续时,每个 trackPause() API 调用均与随后的一个 trackPlay() API 调用相配对。
有关跟踪核心播放的其他信息,请参阅以下内容: