Rework WidevineSamplePlayer to use fragments

Previously it used TabActivity which has been deprecated
and no longer works.

bug: 29045104

Change-Id: I207f0208b6dba47adfa0ffe7485800d1561af617
This commit is contained in:
Jeff Tinker
2016-06-03 15:53:52 -07:00
parent e33895f5de
commit 9f735d298a
22 changed files with 285 additions and 367 deletions

View File

@@ -1,10 +1,10 @@
/*
* (c)Copyright 2011 Widevine Technologies, Inc
* (c)Copyright 2011 Google, Inc
*/
package com.widevine.demo;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -33,7 +33,7 @@ import android.util.Log;
import java.io.IOException;
public class VideoPlayerView extends Activity {
public class VideoPlayerView extends AppCompatActivity {
private final static String TAG = "VideoPlayerView";
private final static float BUTTON_FONT_SIZE = 10;
@@ -44,13 +44,11 @@ public class VideoPlayerView extends Activity {
private WidevineDrm drm;
private FullScreenVideoView videoView;
private MediaCodecView mediaCodecView;
private String assetUri;
private TextView logs;
private ScrollView scrollView;
private Context context;
private ClipImageView bgImage;
private Button mediaCodecModeButton;
private Button playButton;
private Button fullScreen;
private Handler hRefresh;
@@ -58,7 +56,6 @@ public class VideoPlayerView extends Activity {
private LinearLayout main;
private LinearLayout sidePanel;
private boolean enteringFullScreen;
private boolean useMediaCodec;
private int width, height;
public void onCreate(Bundle savedInstanceState) {
@@ -69,7 +66,6 @@ public class VideoPlayerView extends Activity {
height = display.getHeight();
width = display.getWidth();
context = this;
useMediaCodec = false;
contentView = createView();
if (drm.isProvisionedDevice()) {
setContentView(contentView);
@@ -87,11 +83,6 @@ public class VideoPlayerView extends Activity {
stopPlayback();
}
}
if (mediaCodecView != null) {
if (mediaCodecView.isPlaying()) {
stopPlayback();
}
}
super.onStop();
}
@@ -153,16 +144,10 @@ public class VideoPlayerView extends Activity {
FrameLayout playerFrame = new FrameLayout(this);
View view;
if (useMediaCodec) {
mediaCodecView = new MediaCodecView(this);
view = mediaCodecView;
} else {
videoView = new FullScreenVideoView(this);
view = videoView;
}
videoView = new FullScreenVideoView(this);
playerFrame.addView(view, new FrameLayout.LayoutParams(
videoView.setVisibility(View.INVISIBLE);
playerFrame.addView(videoView, new FrameLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.MATCH_PARENT));
@@ -174,7 +159,6 @@ public class VideoPlayerView extends Activity {
public void onClick(View v) {
Log.d(TAG, "Click play (start playback).");
startPlayback();
}
});
@@ -211,8 +195,8 @@ public class VideoPlayerView extends Activity {
FrameLayout.LayoutParams.WRAP_CONTENT));
fullScreen.setVisibility(View.INVISIBLE);
playerFrame.addView(bgImage, new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT));
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT));
main = new LinearLayout(this);
main.addView(playerFrame, new LinearLayout.LayoutParams((int)(width * 0.65),
@@ -227,23 +211,14 @@ public class VideoPlayerView extends Activity {
private void startPlayback() {
logMessage("Playback start.");
playButton.setText(R.string.stop);
bgImage.setVisibility(View.GONE);
videoView.setVisibility(View.VISIBLE);
if (useMediaCodec) {
mediaCodecView.setDataSource(
this,
Uri.parse(assetUri),
null /* headers */,
true /* encrypted */);
videoView.setVideoPath(assetUri);
videoView.setMediaController(new MediaController(context));
mediaCodecView.setMediaController(new MediaController(context));
mediaCodecView.requestFocus();
mediaCodecView.start();
} else {
videoView.setVideoPath(assetUri);
videoView.setMediaController(new MediaController(context));
videoView.setOnErrorListener(new OnErrorListener() {
videoView.setOnErrorListener(new OnErrorListener() {
public boolean onError(MediaPlayer mp, int what, int extra) {
String message = "Unknown error: " + what;
switch (what) {
@@ -261,18 +236,19 @@ public class VideoPlayerView extends Activity {
updateLogs();
bgImage.setVisibility(View.VISIBLE);
videoView.setVisibility(View.INVISIBLE);
return false;
}
});
videoView.setOnCompletionListener(new OnCompletionListener() {
videoView.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
Log.d(TAG, "onCompletion.");
stopPlayback();
}
});
videoView.setOnInfoListener(new OnInfoListener() {
videoView.setOnInfoListener(new OnInfoListener() {
public boolean onInfo(MediaPlayer mp, int what, int extra) {
String message = "Unknown info message";
@@ -315,68 +291,40 @@ public class VideoPlayerView extends Activity {
}
});
videoView.requestFocus();
videoView.requestFocus();
videoView.start();
videoView.start();
if (videoView.getFullScreen()) {
sidePanel.setVisibility(View.GONE);
} else {
sidePanel.setVisibility(View.VISIBLE);
}
fullScreen.setVisibility(View.VISIBLE);
videoView.setFullScreenDimensions(contentView.getRight() - contentView.getLeft(),
contentView.getBottom() - contentView.getTop());
if (videoView.getFullScreen()) {
sidePanel.setVisibility(View.GONE);
} else {
sidePanel.setVisibility(View.VISIBLE);
}
fullScreen.setVisibility(View.VISIBLE);
videoView.setFullScreenDimensions(contentView.getRight() - contentView.getLeft(),
contentView.getBottom() - contentView.getTop());
}
private void stopPlayback() {
logMessage("Stop Playback.");
playButton.setText(R.string.play);
bgImage.setVisibility(View.VISIBLE);
videoView.setVisibility(View.INVISIBLE);
if (useMediaCodec) {
mediaCodecView.reset();
} else {
videoView.stopPlayback();
videoView.stopPlayback();
fullScreen.setVisibility(View.INVISIBLE);
if (videoView.getFullScreen() && !enteringFullScreen) {
videoView.setVisibility(View.INVISIBLE);
videoView.setFullScreen(false);
videoView.setVisibility(View.VISIBLE);
sidePanel.setVisibility(View.VISIBLE);
fullScreen.setText(FULLSCREEN);
}
fullScreen.setVisibility(View.INVISIBLE);
if (videoView.getFullScreen() && !enteringFullScreen) {
videoView.setVisibility(View.INVISIBLE);
videoView.setFullScreen(false);
sidePanel.setVisibility(View.VISIBLE);
fullScreen.setText(FULLSCREEN);
}
enteringFullScreen = false;
}
private View createButtons() {
mediaCodecModeButton = new Button(this);
if (useMediaCodec) {
mediaCodecModeButton.setText(R.string.normal_mode);
} else {
mediaCodecModeButton.setText(R.string.mediacodec_mode);
}
mediaCodecModeButton.setTextSize(BUTTON_FONT_SIZE);
mediaCodecModeButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
onStop();
useMediaCodec = (useMediaCodec) ? false : true;
Log.d(TAG, "Click media codec mode. useMediaCodec = "+useMediaCodec);
contentView = createView();
if (drm.isProvisionedDevice()) {
setContentView(contentView);
} else {
setContentView(R.layout.notprovisioned);
}
}
});
playButton = new Button(this);
playButton.setText(R.string.play);
playButton.setTextSize(BUTTON_FONT_SIZE);