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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user