package com.byoutline.kickmaterial.activities; import android.content.Context; import android.content.Intent; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.Window; import android.view.WindowManager; import android.widget.VideoView; import butterknife.BindView; import butterknife.ButterKnife; import com.byoutline.kickmaterial.R; import com.byoutline.kickmaterial.model.ProjectDetails; import com.byoutline.kickmaterial.views.VideoController; import com.byoutline.secretsauce.utils.LogUtils; /** * @author Sebastian Kacprzak <sebastian.kacprzak at byoutline.com> */ public class VideoActivity extends KickMaterialBaseActivity { public static final String BUNDLE_VIDEO_URL = "bundle_video_url"; public static final String BUNDLE_ALT_VIDEO_URL = "bundle_alt_video_url"; public static final String BUNDLE_WEBVIEW_URL = "bundle_web_view_url"; private static final String TAG = LogUtils.makeLogTag(VideoActivity.class); @BindView(R.id.video_view) VideoView videoView; public static void showActivity(Context context, ProjectDetails projectDetails) { showActivity(context, projectDetails.getVideoUrl(), projectDetails.getAltVideoUrl(), projectDetails.getPledgeUrl()); } public static void showActivity(Context context, String videoUrl, String altVideoUrl, String webviewUrl) { Intent intent = new Intent(context, VideoActivity.class); intent.putExtra(VideoActivity.BUNDLE_VIDEO_URL, videoUrl); intent.putExtra(VideoActivity.BUNDLE_ALT_VIDEO_URL, altVideoUrl); intent.putExtra(VideoActivity.BUNDLE_WEBVIEW_URL, webviewUrl); context.startActivity(intent); } @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState); setContentView(R.layout.activity_video); ButterKnife.bind(this); if (savedInstanceState == null) { setDataFromArgs(); } } @Override protected boolean shouldBlockOrientationOnBuggedAndroidVersions() { // This activity is locked in landscape on all devices. return false; } private void setDataFromArgs() { Intent intent = getIntent(); if (intent == null) { LogUtils.LOGE(TAG, "Null intent"); // NOI18E return; } Bundle args = intent.getExtras(); if (args == null) { LogUtils.LOGE(TAG, "Null args"); // NOI18E return; } String videoUrl = args.getString(BUNDLE_VIDEO_URL); String altVideoUrl = args.getString(BUNDLE_ALT_VIDEO_URL); String webviewUrl = args.getString(BUNDLE_WEBVIEW_URL); Uri uri = Uri.parse(videoUrl); videoView.setMediaController(new VideoController(this, webviewUrl)); videoView.setVideoURI(uri); videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { boolean tryAltVideo = !TextUtils.isEmpty(altVideoUrl); @Override public boolean onError(MediaPlayer mediaPlayer, int i, int i1) { if (tryAltVideo) { tryAltVideo = false; videoView.setVideoURI(Uri.parse(altVideoUrl)); videoView.start(); return true; } return false; } }); videoView.setOnCompletionListener(mediaPlayer -> finish()); videoView.requestFocus(); } @Override protected void onStart() { super.onStart(); videoView.start(); } @Override public void setToolbarAlpha(float alpha) { } }