Set up Android set-up-android

Learn how to set up Streaming Media Analytics for Android devices.

With the end of support for Version 4 Mobile SDKs on August 31, 2021, Adobe will also end support for the Media Analytics SDK for iOS and Android. For additional information, see Media Analytics SDK End-of-Support FAQs.


  • Obtain valid configuration parameters for the Media SDK
    These parameters can be obtained from an Adobe representative after you set up your analytics account.

  • Implement ADBMobile for Android in your application
    For more information about the Adobe Mobile SDK documentation, see Android SDK 4.x for Experience Cloud Solutions.

  • Provide the following capabilities in your media player:

    • An API to subscribe to player events - The Media SDK requires that you call a set of simple APIs when events occur in your player.
    • An API that provides player information - This information includes details such as the media name and the play head position.

SDK Implementation

  1. Add your downloaded Media SDK to your project.

    1. Expand the Android zip file (e.g., MediaSDK-android-v2.*.zip).

    2. Verify that the MediaSDK.jar file exists in the libs/ directory.

    3. Add the library to your project.

      IntelliJ IDEA:

      1. Right click your project in the Project navigation panel.

      2. Select Open Module Settings.

      3. Under Project Settings, select Libraries.

      4. Click + to add a new library.

      5. Select Java and navigate to the MediaSDK.jar file.

      6. Select the modules in which you plan to use the mobile library.

      7. Click Apply and then OK to close the Module Settings window.


      1. In the Eclipse IDE, right-click on the project name.

      2. Click Build Path > Add External Archives .

      3. Select MediaSDK.jar.

      4. Click Open.

      5. Right-click the project again, and click Build Path > Configure Build Path .

      6. Click the Order and Export tabs.

      7. Ensure that the MediaSDK.jar file is selected.

  2. Import the library.

    code language-java
  3. Create the MediaHeartbeatConfig instance.

    Here is a sample MediaHeartbeatConfig initialization:

    code language-java
    // Media Heartbeat Initialization
    config.appVersion = <SAMPLE_HEARTBEAT_SDK_VERSION>;
    config.ovp =  <SAMPLE_HEARTBEAT_OVP_NAME>;
    config.playerName = <SAMPLE_PLAYER_NAME>;
    config.ssl = <true/false>;
    config.debugLogging = <true/false>;
  4. Implement the MediaHeartbeatDelegate interface.

    code language-java
    public class VideoAnalyticsProvider implements Observer, MediaHeartbeatDelegate{}
    code language-java
    // Replace <bitrate>, <startupTime>, <fps>, and
    // <droppeFrames> with the current playback QoS values.
    public MediaObject getQoSObject() {
        return MediaHeartbeat.createQoSObject(<bitrate>,
    //Replace <currentPlaybackTime> with the video player current playback time
    public Double getCurrentPlaybackTime() {
        return <currentPlaybackTime>;
  5. Create the MediaHeartbeat instance.

    Use the MediaHeartbeatConfig instance and the MediaHertbeatDelegate instance to create the MediaHeartbeat instance.

    code language-java
    // Replace <MediaHertbeatDelegate> with your delegate instance
    MediaHeartbeat _heartbeat =
      new MediaHeartbeat(<MediaHeartbeatDelegate>, config);
    note important
    Make sure that your MediaHeartbeat instance is accessible and does not get deallocated until the end of the session. This instance will be used for all of the following tracking events.

Adding app permissions

Your app using the Media SDK requires the following permissions to send data in tracking calls:


To add these permissions, add the following lines to your AndroidManifest.xml file in the application project directory:

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

Migrating from version 1.x to 2.x in Android

In versions 2.x, all of the public methods are consolidated into the class to make it easier on developers. Also, all configs are now consolidated into the class.

For information about migrating from 1.x to 2.x, see the Legacy Implementation documentation.