package com.mopub.mobileads; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.View; import android.view.Window; import android.view.WindowManager; import com.mopub.common.logging.MoPubLog; import com.mopub.common.util.Intents; import com.mopub.mraid.MraidVideoViewController; import static com.mopub.common.DataKeys.BROADCAST_IDENTIFIER_KEY; import static com.mopub.mobileads.EventForwardingBroadcastReceiver.ACTION_INTERSTITIAL_FAIL; import static com.mopub.mobileads.EventForwardingBroadcastReceiver.broadcastAction; public class MraidVideoPlayerActivity extends BaseVideoPlayerActivity implements BaseVideoViewController.BaseVideoViewControllerListener { @Nullable private BaseVideoViewController mBaseVideoController; private long mBroadcastIdentifier; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); mBroadcastIdentifier = getBroadcastIdentifierFromIntent(getIntent()); try { mBaseVideoController = createVideoViewController(); } catch (IllegalStateException e) { // This can happen if the activity was started without valid intent extras. We leave // mBaseVideoController set to null, and finish the activity immediately. broadcastAction(this, mBroadcastIdentifier, ACTION_INTERSTITIAL_FAIL); finish(); return; } mBaseVideoController.onCreate(); } @Override protected void onPause() { if (mBaseVideoController != null) { mBaseVideoController.onPause(); } super.onPause(); } @Override protected void onResume() { super.onResume(); if (mBaseVideoController != null) { mBaseVideoController.onResume(); } } @Override protected void onDestroy() { if (mBaseVideoController != null) { mBaseVideoController.onDestroy(); } super.onDestroy(); } @Override public void onBackPressed() { if (mBaseVideoController != null && mBaseVideoController.backButtonEnabled()) { super.onBackPressed(); } } @Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { if (mBaseVideoController != null) { mBaseVideoController.onActivityResult(requestCode, resultCode, data); } } private BaseVideoViewController createVideoViewController() throws IllegalStateException { String clazz = getIntent().getStringExtra(VIDEO_CLASS_EXTRAS_KEY); if ("vast".equals(clazz)) { return new VastVideoViewController(this, getIntent().getExtras(), mBroadcastIdentifier, this); } else if ("mraid".equals(clazz)) { return new MraidVideoViewController(this, getIntent().getExtras(), this); } else { throw new IllegalStateException("Unsupported video type: " + clazz); } } /** * Implementation of BaseVideoViewControllerListener */ @Override public void onSetContentView(final View view) { setContentView(view); } @Override public void onSetRequestedOrientation(final int requestedOrientation) { setRequestedOrientation(requestedOrientation); } @Override public void onFinish() { finish(); } @Override public void onStartActivityForResult(final Class<? extends Activity> clazz, final int requestCode, final Bundle extras) { if (clazz == null) { return; } final Intent intent = Intents.getStartActivityIntent(this, clazz, extras); try { startActivityForResult(intent, requestCode); } catch (ActivityNotFoundException e) { MoPubLog.d("Activity " + clazz.getName() + " not found. Did you declare it in your AndroidManifest.xml?"); } } protected static long getBroadcastIdentifierFromIntent(Intent intent) { return intent.getLongExtra(BROADCAST_IDENTIFIER_KEY, -1); } @Deprecated // for testing BaseVideoViewController getBaseVideoViewController() { return mBaseVideoController; } @Deprecated // for testing void setBaseVideoViewController(final BaseVideoViewController baseVideoViewController) { mBaseVideoController = baseVideoViewController; } }