我已经在其中一个活动中添加了ExoPlayer来播放视频,并且它工作正常。但是当视频正在播放并且用户按下后退按钮时,视频仍然在后台继续播放。我希望它停止。我尝试捕获后退按钮并尝试暂停视频,但它不工作。除非你杀死该活动,视频一直播放到完成。是bug还是这就是库应该如何工作?
下面是expPlayr的工作代码
String url = getIntent().getStringExtra("videoURL");
String title = getIntent().getStringExtra("title");
exoPlayerView = (SimpleExoPlayerView) findViewById(R.id.exo_player_id);
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory(title);
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource m = new HlsMediaSource(Uri.parse(url), dataSourceFactory, null,null);
exoPlayerView.setPlayer(exoPlayer);
exoPlayer.prepare(m);
exoPlayer.setPlayWhenReady(true);
这是我试图用来阻止视频的代码。
@Override
public void onBackPressed(){
try{
exoPlayer.stop();
}catch(Exception e){
e.printStackTrace();
}
}
我在调试模式下查看代码,并执行了此语句,但仍然没有停止视频。
8条答案
按热度按时间uwopmtnx1#
试试这个
wfveoks02#
我在我的项目中也遇到了同样的问题。我遇到的问题是- Exoplayer在屏幕加载时初始化了两次,当我们调用realeseExoplayer时释放了一个示例()在暂停或恢复中()。即使Activity关闭,第二个示例也会继续在后台播放。因此,请求仔细检查Exoplayer是否初始化了两次。如果初始化了多次,进行必要的更改以初始化它一次。
w1e3prcc3#
我的程式码可用于声音活动:
omqzjyyz4#
我建议在Activity的生命周期方法中初始化和发布播放器。如果你做得很好,你就不需要onBackPressed方法,因为你的代码是在生命周期方法中执行的。
PlayerActivity of the ExoPlayer demo application on Github基本上具有以下生命周期方法:
e7arh2l65#
你可以使用exoplayer的例子,releasePlayer方法:
请参阅ExoPlayer演示中的PlayerActivity类。
x8goxv8g6#
这是一个例子,你可以如何实现什么纳温露说。
h9a6wy2h7#
下面的代码对我来说很好:
5cnsuln78#
我刚遇到这个问题,这里的解决方案都没有帮助。希望它能帮助到某人。
那么,还有什么可能是错误的呢?在
Player.STATE_READY
中调用exoPlayer.play()
是程序错误。从回调中删除exoPlayer.play()
。如果你想在播放器准备好后立即播放视频文件,请在Player.STATE_READY
处创建一个标志,并使用处理程序检查它是否准备好,然后播放。我希望这会有所帮助。