@Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); if (callback != null) { callback.onBigPlayerCreated(); } playerView.setKeepScreenOn(true); Point windowSize = new Point(); windowManager.getDefaultDisplay().getSize(windowSize); // Optimize playerView scale type // Just using AspectRatioFrameLayout.RESIZE_MODE_FILL will not work well for small Video. if (windowSize.y * videoItem.getMediaUrl().getRatio() >= windowSize.x) { playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH); } else { playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIXED_HEIGHT); } }
private void initExoPlayer() { PlayerView playerView = findViewById(R.id.exoplayer_view); playerView.requestFocus(); playerView.setControllerAutoShow(false); playerView.setUseController(false); playerView.setKeepScreenOn(true); DefaultRenderersFactory rendererFactory = new DefaultRenderersFactory(this, DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER); TrackSelector trackSelector = new DefaultTrackSelector(); DefaultLoadControl.Builder builder = new DefaultLoadControl.Builder(); builder.setAllocator(new DefaultAllocator(true, C.DEFAULT_BUFFER_SEGMENT_SIZE)); builder.setBufferDurationsMs( 2000, 15000, 1500, 0 ); LoadControl loadControl = builder.createDefaultLoadControl(); player = ExoPlayerFactory.newSimpleInstance(this, rendererFactory, trackSelector, loadControl); player.addVideoListener(new com.google.android.exoplayer2.video.VideoListener() { @Override public void onVideoSizeChanged(int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) { } @Override public void onRenderedFirstFrame() { mMPCheckTime = System.nanoTime(); } }); playerView.setPlayer(player); }