问题描述
每当点击一个项目时,我想在应用程序关闭时从停止的地方恢复视频。我尝试了以下但它没有做任何事情。当视频被点击时,它会从头打开,而不是从它离开的地方打开。这是实现
SimpleExoPlayer player;
long mLastPosition;
PlayerView playerView;
int position = 0;
ArrayList<Files> myFiles = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
position = getIntent().getIntExtra("position",0);
String path = myFiles.get(position).getPath();
Uri uri = Uri.parse(path);
player= new SimpleExoPlayer.Builder(this).build();
DataSource.Factory factory = new DefaultDataSourceFactory
(this,Util.getUserAgent(this,"My App"));
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource = new ProgressiveMediaSource.Factory(factory,extractorsFactory).createMediaSource(uri);
playerView.setPlayer(player);
playerView.setKeepScreenOn(true);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
@Override
protected void onPause() {
super.onPause();
player.setPlayWhenReady(false);
player.getPlaybackState();
if (player != null){
player.stop();
mLastPosition= player.getCurrentPosition();
}
}
@Override
protected void onResume() {
super.onResume();
if(mLastPosition!=0 && player!=null){
player.seekTo(mLastPosition);
}
}
解决方法
您使用了错误的变量
@Override
protected void onPause() {
super.onPause();
player.setPlayWhenReady(false);
player.getPlaybackState();
if (player != null){
player.stop();
last_position = player.getCurrentPosition(); //what is last_position here?
//it should be mLastPosition like this
mLastPosition = player.getCurrentPosition();
}
}
@Override
protected void onResume() {
super.onResume();
if(mLastPosition!=0 && player!=null){
player.seekTo(mLastPosition);
}
}