MediaMelon Android Media3 v1.1.1 SDK Integration Document

This guide provides detailed instructions on integrating the Android MediaMelon SDK with Media3 v1.1.1 player

Step 1: Prerequisites

Step 2: Set up the build environment

Step 3: Import Packages

Step 4: Register and Initialise SDK

Step 5: Report Ended State

Step 6: Variables and Description

Step 1: Prerequisites

  • Meida3 - v1.1.1 sample application.

  • MediaMelon SmartSight SDK Maven dependencies or the provided smartstreaming_release.aar AAR file is necessary.

Step 2: Set up the build environment

$MEDIA3PROJECT = {Media3 - v1.1.1}

The SDK files should be added to the build environment and the required network permissions should be enabled.

Using Maven:

  1. Add MediaMelon Maven dependency to $MEDIA3PROJECT/demos/main/build.gradle

    dependencies {
       ...
      implementation 'com.github.MediamelonSDK:mm-sdk-media3-v1.1.1-android:1.0.0'
    }

Using AAR:

  1. Copy smartstreaming-release.aar provided in the release package to the Media3 project. Example $MEDIA3PROJECT/demos/main/smartstreaming-release.aar

  2. Add the following library to $MEDIA3PROJECT/demos/main/build.gradle :-

dependencies {
  ...
  api files ('smartstreaming-release.aar')
}

Add network permissions to $MEDIA3PROJECT/demos/main/src/main/AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Step 3: Import Packages

$MEDIA3PROJECT/demos/main/src/main/java/androidx/media3/demo/main/PlayerActivity.java

import com.mediamelon.qubit.ep.ContentMetadata;
import com.mediamelon.smartstreaming.media3.MMSmartStreamingMedia3;

Step 4: Register and Initialise SDK

The player application must register the SDK and provide player information once after player is initialised. Please note that values provided in this integration step persist across video sessions.

The SDK must be initialised at the start of each video session. Initialisation includes setting the application context, initialising the playback session, and indicating the intent for playback with the SDK.

The enableLogTrace() feature should be enabled for testing during the integration process. Set this to False before releasing the player to production.

CUSTOMER_ID is your MediaMelon assigned Customer ID. If you do not know your Customer ID contact MediaMelon at customer-support@mediamelon.com.

protected boolean initializePlayer() {
   if (player == null) {
   Intent intent = getIntent();
   ...
   // after player is initialised and not null anymore
   initializeMediaMelon();
   ...
 }

void initializeMediaMelon(){
     MMSmartStreamingMedia3.enableLogTrace(true);
    if (MMSmartStreamingMedia3.getRegistrationStatus() == false)
    {
      MMSmartStreamingMedia3.setContext(getApplicationContext()); //Please make sure to provide the application's context here, and not the activity's context
      boolean hashSubscriberId = true;
      MMSmartStreamingMedia3.registerMMSmartStreaming("PLAYER_NAME", "CUSTOMER_ID", "SUBSCRIBER_ID", "DOMAIN_NAME", "SUBSCRIBER_TYPE", "SUBSCRIBER_TAG", hashSubscriberId);
      MMSmartStreamingMedia3.reportPlayerInfo("PLAYER_BRAND", "PLAYER_MODEL", "PLAYER_VERSION");
      MMSmartStreamingMedia3.reportAppInfo("APP_NAME","APP_VERSION");
      MMSmartStreamingMedia3.setDeviceInfo("DEVICE_MARKETING_NAME");
    }
    
    String streamURL = String.valueOf(mediaItems.get(0).localConfiguration.uri); //getting the mediaURL from the application

    ContentMetadata cm  = new ContentMetadata();
    cm.assetName="ASSET_NAME";
    cm.assetId="ASSET_ID";
    cm.videoId="VIDEO_ID";
    cm.seriesTitle="SERIES_TITLE";
    cm.season="SEASON";
    cm.genre="GENRE";
    cm.episodeNumber="EPISODE_NUMBER";
    cm.drmProtection="DRM_PROTECTION";
    cm.contentType="CONTENT_TYPE";
    JSONObject contentMetadata = cm.getJSONObject();

    MMSmartStreamingMedia3.reportCustomMetadata("KEY1","VALUE1");
    MMSmartStreamingMedia3.reportCustomMetadata("KEY2","VALUE2");
    
    boolean isLive = false;
    MMSmartStreamingMedia3.initializeSession(player, streamURL, contentMetadata, isLive);
    MMSmartStreamingMedia3.reportUserInitiatedPlayback();
 }

Step 5: Report Ended State

In $MEDIA3PROJECT/demos/main/src/main/java/androidx/media3/demo/main/PlayerActivity.java

private void releasePlayer() {
    if (player != null) {
      player.release();
      player = null;
      
      MMSmartStreamingMedia3.reportPlayerState(false, Player.STATE_ENDED);
    }
  }

Step 6: Variables and Description

Last updated