Нажатие кнопки «Назад» в Android Leanback не останавливает фрагмент видеоJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Нажатие кнопки «Назад» в Android Leanback не останавливает фрагмент видео

Сообщение Anonymous »

Привет всем, у меня возникла проблема с закрытием моего PlaybackVideoFragment, который расширяет VideoSupportFragment, после того как я нажал кнопку возврата на моем пульте.
Код, который я должен срабатывать при нажатии кнопки назад, следующий ( 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»