Код, который я должен срабатывать при нажатии кнопки назад, следующий ( playerView.addOnUnhandledKeyEventListener):
Код: Выделить всё
@OptIn(markerClass = UnstableApi.class)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainFragment.movie = (Movie) getActivity().getIntent().getSerializableExtra(MOVIE);
long cacheMaxSize = 90 * 1024 * 1024;
File cacheRoot = getContext().getExternalCacheDir() != null ? getContext().getExternalCacheDir() : getContext().getCacheDir();
File cacheDir = new File(cacheRoot, "media");
SimpleCache simpleCache = new SimpleCache(cacheDir, new LeastRecentlyUsedCacheEvictor(cacheMaxSize), new StandaloneDatabaseProvider(getContext()));
DefaultHttpDataSource.Factory httpDataSourceFactory = new DefaultHttpDataSource.Factory();
CacheDataSource.Factory cacheDataSourceFactory = new CacheDataSource.Factory()
.setCache(simpleCache)
.setUpstreamDataSourceFactory(httpDataSourceFactory)
.setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR);
ProgressiveMediaSource.Factory mediaSourceFactory = new ProgressiveMediaSource.Factory(cacheDataSourceFactory);
DefaultLoadControl loadControl = new DefaultLoadControl.Builder()
.setBufferDurationsMs(8 * 1024, 64 * 1024, 50, 1024)
.build();
ExoPlayer player = new ExoPlayer.Builder(getContext())
.setMediaSourceFactory(mediaSourceFactory)
.setLoadControl(loadControl)
.build();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
playerView.addOnUnhandledKeyEventListener((v, event) -> {
//Handle BACK button
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP)
{
getActivity().finish();
//playerView.hideController(); //Hide mediaController,according to your needs, you can also called here onBackPressed() or finish()
}
return true;
});
}
playerView.setUseController(true);
player.setPlayWhenReady(false);
playerView.setPlayer(player);
Uri uri = Uri.parse(MainFragment.movie.getVideoUrl());
MediaItem mediaItem = MediaItem.fromUri(uri);
player.setMediaItem(mediaItem);
player.addListener(pbl());
player.setRepeatMode(Player.REPEAT_MODE_OFF);
player.prepare();
player.play();
}
Код: Выделить всё
public class PlaybackActivity extends FragmentActivity {
public static ProgressBar mProgressBar;
public static PlayerView playerView;
public static Activity activity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
activity = this;
mProgressBar = findViewById(R.id.amPrgbrLoading);
playerView = findViewById(R.id.player_view);
getSupportFragmentManager()
.beginTransaction()
.replace(android.R.id.content, new PlaybackVideoFragment())
.commit();
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... o-fragment