Update the build.gradle

  1. In Project view, select app src and open the build.gradle file. In the android block, change the minSdkVersion to 21.

          android {
            compileSdkVersion 28
            defaultConfig {
              applicationId "com.example.myapplication"
              minSdkVersion 21
              targetSdkVersion 28
  2. Add the following lines to the android block:

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
  3. In the dependencies block:
    • Change the implementation fileTree(dir: 'libs', include: ['*.jar']) filetype to ['*.aar'].
    • Add the dependency androidx.appcompat:appcompat 1.1.0.
        dependencies {
            implementation fileTree(dir: 'libs', include: ['*.aar'])
            implementation 'androidx.appcompat:appcompat:1.1.0'

    On completion, sync the build.gradle.

Edit the MainActivity.java

Add the minimum amount of code to enable playback of a single clear stream (identified by a hard-coded string) as soon as the app starts.

  1. Select app src main java filename and open the MainActivity.java file. Add the following imports:

        import nagra.otv.sdk.OTVSDK;
        import nagra.otv.sdk.OTVVideoView;
  2. Below the line public class MainActivity extends AppCompatActivity { add:

        static final String  TAG = "MainActivity";
        private OTVVideoView mOTVVideoView = null;
        private int          mPausePos = 0;
        private String       mVideoURI = "https://d3bqrzf9w11pn3.cloudfront.net/basic_dash_bbb_clear/bbb_public.mpd";
  3. Replace the contents of the onCreate method with following to set a reference to the video view and load the SDK.

        protected void onCreate(Bundle savedInstanceState) {
          mOTVVideoView = findViewById(R.id.otvVideoView);

    OTVSDK.load(Context context); must be called before accessing any SDK 5 methods as it loads up the player licence and starts up the libraries. This call assumes it can find the licence at the application’s res/raw directory. Alternatively, for trial and testing purposes, the licence can be passed as a string via OTVSDK.load(Context context, String license). The method needs to be called only once at application start-up or before the first use of the SDK.

  4. Add the following to set the Android onStart method, set the stream and start it.

    public void onStart()
  5. Add the following to set the Android onPause method, to save the current position and pause the playback.

        public void onPause()
          if(mOTVVideoView != null)
            mPausePos = mOTVVideoView.getCurrentPosition();
  6. Add the following to set the Android onResume method, to seek to the paused position and start playback.

        public void onResume()
          if(mOTVVideoView != null && mPausePos > 0)
            mPausePos = 0;

Add a video view to the layout

  1. Select app > src > main > res > layout and open the activity_main.xml file.
  2. In the Text view window, create a nagra.otv.sdk.OTVVideoView by replacing the contents with:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:descendantFocusability="afterDescendants" />

The OTVVideoView element works as the foremost UI element when part of a layout. Placing any other elements on top of the video view’s area will produce unpredictable effects, and may interfere with the built-in security measures.

Next step: You should now be able to run the app in clear playback mode.