@Override public View onCreateOverlayView() { LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); mSubtitleView = (SubtitleLayout) inflater.inflate(R.layout.subtitleview, null); // Configure the subtitle view. CaptionStyleCompat captionStyle; float captionTextSize = getCaptionFontSize(); captionStyle = CaptionStyleCompat .createFromCaptionStyle(mCaptioningManager.getUserStyle()); captionTextSize *= mCaptioningManager.getFontScale(); mSubtitleView.setStyle(captionStyle); mSubtitleView.setFixedTextSize(TEXT_UNIT_PIXELS, captionTextSize); mSubtitleView.setVisibility(View.VISIBLE); return mSubtitleView; }
private void configureSubtitleView() { CaptionStyleCompat style; float fontScale; if (Util.SDK_INT >= 19) { style = getUserCaptionStyleV19(); fontScale = getUserCaptionFontScaleV19(); } else { style = CaptionStyleCompat.DEFAULT; fontScale = 1.0f; } subtitleLayout.setStyle(style); subtitleLayout.setFractionalTextSize(SubtitleLayout.DEFAULT_TEXT_SIZE_FRACTION * fontScale); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_player); View root = findViewById(R.id.root); root.setOnTouchListener((view, motionEvent) -> { if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { toggleControlsVisibility(); } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { view.performClick(); } return true; }); root.setOnKeyListener((v, keyCode, event) -> !(keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE || keyCode == KeyEvent.KEYCODE_MENU) && mediaController.dispatchKeyEvent(event)); shutterView = findViewById(R.id.shutter); videoFrame = (AspectRatioFrameLayout) findViewById(R.id.video_frame); surfaceView = (SurfaceView) findViewById(R.id.surface_view); surfaceView.getHolder().addCallback(this); subtitleLayout = (SubtitleLayout) findViewById(R.id.subtitles); mediaController = new KeyCompatibleMediaController(this); mediaController.setAnchorView(root); CookieHandler currentHandler = CookieHandler.getDefault(); if (currentHandler != defaultCookieManager) { CookieHandler.setDefault(defaultCookieManager); } audioCapabilitiesReceiver = new AudioCapabilitiesReceiver(this, this); audioCapabilitiesReceiver.register(); }
private void configureSubtitleView() { CaptionStyleCompat captionStyle; float fontScale; if (Util.SDK_INT >= 19) { captionStyle = getUserCaptionStyleV19(); fontScale = getUserCaptionFontScaleV19(); } else { captionStyle = CaptionStyleCompat.DEFAULT; fontScale = 1.0f; } subtitleLayout.setStyle(captionStyle); subtitleLayout.setFractionalTextSize(SubtitleLayout.DEFAULT_TEXT_SIZE_FRACTION * fontScale); }
@Override public void attachSurfaceViewToPlayer() { if (prepareWithConfigurationMode) { LOGD(TAG, "KExoPlayer attachSurfaceViewToPlayer " + prepareWithConfigurationMode); LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, Gravity.CENTER); this.addView(mSurfaceView, layoutParams); mSubtView = new com.google.android.exoplayer.text.SubtitleLayout(getContext()); this.addView(mSubtView, layoutParams); } }
private void configureSubtitleView() { CaptionStyleCompat style; float fontScale; if (Util.SDK_INT >= 19) { style = getUserCaptionStyleV19(); fontScale = getUserCaptionFontScaleV19(); } else { style = CaptionStyleCompat.DEFAULT; fontScale = 1.0f; } if (mSubtView != null) { mSubtView.setStyle(style); mSubtView.setFractionalTextSize(SubtitleLayout.DEFAULT_TEXT_SIZE_FRACTION * fontScale); } }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // TODO: // setContentView(R.layout.player_activity); setContentView(R.layout.player_activity_two); root = findViewById(R.id.root); root.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { toggleControlsVisibility(); } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { view.performClick(); } return true; } }); root.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE || keyCode == KeyEvent.KEYCODE_MENU) { return false; } // TODO: return mediaController.dispatchKeyEvent(event); return goatMediaController.dispatchKeyEvent(event); } }); shutterView = findViewById(R.id.shutter); debugRootView = findViewById(R.id.controls_root); videoFrame = (AspectRatioFrameLayout) findViewById(R.id.video_frame); surfaceView = (SurfaceView) findViewById(R.id.surface_view); surfaceView.getHolder().addCallback(this); debugTextView = (TextView) findViewById(R.id.debug_text_view); playerStateTextView = (TextView) findViewById(R.id.player_state_view); subtitleLayout = (SubtitleLayout) findViewById(R.id.subtitles); // TODO: // mediaController = new MediaController(this); // mediaController.setAnchorView(root); goatMediaController = (GoatMediaController) findViewById(R.id.media_controller); retryButton = (Button) findViewById(R.id.retry_button); retryButton.setOnClickListener(this); videoButton = (Button) findViewById(R.id.video_controls); audioButton = (Button) findViewById(R.id.audio_controls); textButton = (Button) findViewById(R.id.text_controls); CookieHandler currentHandler = CookieHandler.getDefault(); if (currentHandler != defaultCookieManager) { CookieHandler.setDefault(defaultCookieManager); } audioCapabilitiesReceiver = new AudioCapabilitiesReceiver(this, this); audioCapabilitiesReceiver.register(); getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.player_activity); View root = findViewById(R.id.root); root.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { toggleControlsVisibility(); } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { view.performClick(); } return true; } }); root.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE || keyCode == KeyEvent.KEYCODE_MENU) { return false; } return mediaController.dispatchKeyEvent(event); } }); shutterView = findViewById(R.id.shutter); debugRootView = findViewById(R.id.controls_root); videoFrame = (AspectRatioFrameLayout) findViewById(R.id.video_frame); surfaceView = (SurfaceView) findViewById(R.id.surface_view); surfaceView.getHolder().addCallback(this); debugTextView = (TextView) findViewById(R.id.debug_text_view); playerStateTextView = (TextView) findViewById(R.id.player_state_view); subtitleLayout = (SubtitleLayout) findViewById(R.id.subtitles); mediaController = new KeyCompatibleMediaController(this); mediaController.setAnchorView(root); retryButton = (Button) findViewById(R.id.retry_button); retryButton.setOnClickListener(this); videoButton = (Button) findViewById(R.id.video_controls); audioButton = (Button) findViewById(R.id.audio_controls); textButton = (Button) findViewById(R.id.text_controls); CookieHandler currentHandler = CookieHandler.getDefault(); if (currentHandler != defaultCookieManager) { CookieHandler.setDefault(defaultCookieManager); } audioCapabilitiesReceiver = new AudioCapabilitiesReceiver(this, this); audioCapabilitiesReceiver.register(); }
public VideoPlayerView(Context context, PlaybackControls controller, View root) { mContext = context; mediaController = controller; shutterView = root.findViewById(R.id.shutter); videoFrame = (AspectRatioFrameLayout) root.findViewById(R.id.video_frame); surfaceView = (SurfaceView) root.findViewById(R.id.surface_view); debugTextView = (TextView) root.findViewById(R.id.debug_text_view); debugView = root.findViewById(R.id.debug_view); statusTextView = (TextView) root.findViewById(R.id.status); playerStateTextView = (TextView) root.findViewById(R.id.player_state_view); subtitleLayout = (SubtitleLayout) root.findViewById(R.id.subtitles); nextEpisodeCard = root.findViewById(R.id.next_episode_card); episodeDetails = root.findViewById(R.id.episode_details); episodeTitle = (TextView) root.findViewById(R.id.episode_title); seriesTitle = (TextView) root.findViewById(R.id.series_title); duration = (TextView) root.findViewById(R.id.duration); ImageCardView card = (ImageCardView) root.findViewById(R.id.next_episode); card.setFocusable(true); card.setFocusableInTouchMode(true); card.setInfoVisibility(View.VISIBLE); card.setExtraVisibility(View.VISIBLE); card.setInfoAreaBackgroundColor(context.getResources().getColor(R.color.black_900)); Point size = new Point(context.getResources().getDimensionPixelSize(R.dimen.card_width), context.getResources().getDimensionPixelSize(R.dimen.card_height)); nextEpisode = new EpisodeCardView(context, card, size, false); nextEpisode.getImageCardView().setCardType(BaseCardView.CARD_TYPE_INFO_OVER); debugView.setVisibility(View.GONE); root.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { return handleTouchEvents(view, motionEvent); } }); root.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { return handleKeyEvents(v, keyCode, event); } }); }
private void bindView(FrameLayout oldRoot) { @SuppressLint("InflateParams") ViewGroup root = (ViewGroup) activity.getLayoutInflater().inflate(R.layout.player_view_layout, null); ViewGroupUtils.replaceView(oldRoot, root); root.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { toggleControlsVisibility(); } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { view.performClick(); } return true; } }); root.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU) { return false; } return mediaController.dispatchKeyEvent(event); } }); audioCapabilitiesReceiver = new AudioCapabilitiesReceiver(activity.getApplicationContext(), this); shutterView = root.findViewById(R.id.shutter); videoFrame = (AspectRatioFrameLayout) root.findViewById(R.id.video_frame); surfaceView = (SurfaceView) root.findViewById(R.id.surface_view); surfaceView.getHolder().addCallback(this); subtitleLayout = (SubtitleLayout) root.findViewById(R.id.subtitles); mediaController = new VideoControllerView(activity, false); mediaController.setAnchorView(root); CookieHandler currentHandler = CookieHandler.getDefault(); if (currentHandler != defaultCookieManager) { CookieHandler.setDefault(defaultCookieManager); } }
private void prepare() { if (mReadiness != KState.IDLE) { LOGD(TAG, "Already preparing"); return; } mReadiness = KState.PREPARING; boolean offline = mSourceURL.startsWith("file://"); mDrmCallback = new KPlayerExoDrmCallback(getContext(), offline); Video video = new Video(mSourceURL, getVideoType()); final ExoplayerWrapper.RendererBuilder rendererBuilder = RendererBuilderFactory .createRendererBuilder(getContext(), video, mDrmCallback); mSurfaceView = new VideoSurfaceView(getContext()); LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, Gravity.CENTER); mExoPlayer = new ExoplayerWrapper(rendererBuilder); Surface surface = mSurfaceView.getHolder().getSurface(); if (surface != null) { mExoPlayer.setSurface(surface); } mExoPlayer.setCaptionListener(this); mExoPlayer.setMetadataListener(this); configureSubtitleView(); mExoPlayer.addListener(this); mExoPlayer.prepare(); mSurfaceCallback = new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { if (mExoPlayer != null && mExoPlayer.getSurface() == null) { mExoPlayer.setSurface(holder.getSurface()); mReadiness = KState.READY; mExoPlayer.addListener(KExoPlayer.this); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { LOGD(TAG, "surfaceChanged(" + format + "," + width + "," + height + ")"); } @Override public void surfaceDestroyed(SurfaceHolder holder) { LOGD(TAG, "surfaceDestroyed"); if (mExoPlayer != null) { mExoPlayer.blockingClearSurface(); mExoPlayer.removeListener(KExoPlayer.this); } } }; mSurfaceView.getHolder().addCallback(mSurfaceCallback); LOGD(TAG, "KExoPlaer prepareWithConfigurationMode " + prepareWithConfigurationMode); if(!prepareWithConfigurationMode) { this.addView(mSurfaceView, layoutParams); mSubtView = new com.google.android.exoplayer.text.SubtitleLayout(getContext()); this.addView(mSubtView, layoutParams); } }