diff options
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/media/VideoPlayer.java')
-rw-r--r-- | mobile/android/base/java/org/mozilla/gecko/media/VideoPlayer.java | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/media/VideoPlayer.java b/mobile/android/base/java/org/mozilla/gecko/media/VideoPlayer.java deleted file mode 100644 index 508b9d015..000000000 --- a/mobile/android/base/java/org/mozilla/gecko/media/VideoPlayer.java +++ /dev/null @@ -1,204 +0,0 @@ -/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.mozilla.gecko.media; - -import android.content.Context; - -import android.graphics.Color; - -import android.net.Uri; - -import android.util.AttributeSet; -import android.util.Log; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; - -import android.widget.ImageButton; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.MediaController; -import android.widget.VideoView; - -import org.mozilla.gecko.R; - -public class VideoPlayer extends FrameLayout { - private VideoView video; - private FullScreenMediaController controller; - private FullScreenListener fullScreenListener; - - private boolean isFullScreen; - - public VideoPlayer(Context ctx) { - this(ctx, null); - } - - public VideoPlayer(Context ctx, AttributeSet attrs) { - this(ctx, attrs, 0); - } - - public VideoPlayer(Context ctx, AttributeSet attrs, int defStyle) { - super(ctx, attrs, defStyle); - setFullScreen(false); - setVisibility(View.GONE); - } - - public void start(Uri uri) { - stop(); - - video = new VideoView(getContext()); - controller = new FullScreenMediaController(getContext()); - video.setMediaController(controller); - controller.setAnchorView(video); - - video.setVideoURI(uri); - - FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams( - FrameLayout.LayoutParams.MATCH_PARENT, - FrameLayout.LayoutParams.WRAP_CONTENT, - Gravity.CENTER); - - addView(video, layoutParams); - setVisibility(View.VISIBLE); - - video.setZOrderOnTop(true); - video.start(); - } - - public boolean isPlaying() { - return video != null; - } - - public void stop() { - if (video == null) { - return; - } - - removeAllViews(); - setVisibility(View.GONE); - video.stopPlayback(); - - video = null; - controller = null; - } - - public void setFullScreenListener(FullScreenListener listener) { - fullScreenListener = listener; - } - - public boolean isFullScreen() { - return isFullScreen; - } - - public void setFullScreen(boolean fullScreen) { - isFullScreen = fullScreen; - if (fullScreen) { - setBackgroundColor(Color.BLACK); - } else { - setBackgroundResource(R.color.dark_transparent_overlay); - } - - if (controller != null) { - controller.setFullScreen(fullScreen); - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (event.isSystem()) { - return super.onKeyDown(keyCode, event); - } - return true; - } - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { - if (event.isSystem()) { - return super.onKeyUp(keyCode, event); - } - return true; - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - super.onTouchEvent(event); - return true; - } - - @Override - public boolean onTrackballEvent(MotionEvent event) { - super.onTrackballEvent(event); - return true; - } - - public interface FullScreenListener { - void onFullScreenChanged(boolean fullScreen); - } - - private class FullScreenMediaController extends MediaController { - private ImageButton mButton; - - public FullScreenMediaController(Context ctx) { - super(ctx); - - mButton = new ImageButton(getContext()); - mButton.setScaleType(ImageView.ScaleType.FIT_CENTER); - mButton.setBackgroundColor(Color.TRANSPARENT); - mButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - FullScreenMediaController.this.onFullScreenClicked(); - } - }); - - updateFullScreenButton(false); - } - - public void setFullScreen(boolean fullScreen) { - updateFullScreenButton(fullScreen); - } - - private void updateFullScreenButton(boolean fullScreen) { - mButton.setImageResource(fullScreen ? R.drawable.exit_fullscreen : R.drawable.fullscreen); - } - - private void onFullScreenClicked() { - if (VideoPlayer.this.fullScreenListener != null) { - boolean fullScreen = !VideoPlayer.this.isFullScreen(); - VideoPlayer.this.fullScreenListener.onFullScreenChanged(fullScreen); - } - } - - @Override - public void setAnchorView(final View view) { - super.setAnchorView(view); - - // Add the fullscreen button here because this is where the parent class actually creates - // the media buttons and their layout. - // - // http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/widget/MediaController.java#239 - // - // The media buttons are in a horizontal linear layout which is itself packed into - // a vertical layout. The vertical layout is the only child of the FrameLayout which - // MediaController inherits from. - LinearLayout child = (LinearLayout) getChildAt(0); - LinearLayout buttons = (LinearLayout) child.getChildAt(0); - - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, - LayoutParams.FILL_PARENT); - params.gravity = Gravity.CENTER_VERTICAL; - - if (mButton.getParent() != null) { - ((ViewGroup)mButton.getParent()).removeView(mButton); - } - - buttons.addView(mButton, params); - } - } -}
\ No newline at end of file |