gpt4 book ai didi

android - videoview.getDuration() 返回 -1

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:01 28 4
gpt4 key购买 nike

我正在尝试开发一个 Android 应用程序来播放原始文件夹中的视频。我正在使用自定义控制选项。 getduration() 返回 -1,所以我不能为我的搜索栏设置最大值。这是我的代码

private MediaController mediaController;
private VideoView videoView;
public TextView duration;
private int timeElapsed=0,finalTime=0;
private int forwardTime=2000, backwardTime=2000;
private SeekBar seekBar;
private Handler durationHandler = new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();

}
public void initialize()
{
videoView =(VideoView)findViewById(R.id.videoView1);


mediaController= new MediaController(this);
mediaController.setAnchorView(videoView);


String
uri1="android.resource://"+getPackageName()+"/"+R.raw.materialdesign;

Uri uri = Uri.parse(uri1);

videoView.setMediaController(null);
videoView.setVideoPath("android.resource://" + getPackageName() + "/" +
R.raw.materialdesign);
Log.e("finalTime", "" + finalTime);
finalTime = videoView.getDuration();
Log.e("finalTime", ""+finalTime);
Log.e("finalTime", ""+videoView.getDuration());
duration = (TextView) findViewById(R.id.songDuration);
seekBar = (SeekBar) findViewById(R.id.seekBar);

seekBar.setMax(finalTime);
seekBar.setClickable(false);

videoView.requestFocus();


}

最佳答案

如果您还没有找到解决方案,VideoView.getDuration() 将在视频未处于播放状态时返回 -1。视频在准备好之前不处于播放状态。因此设置 URI 后直接调用 VideoView.getDuration() 并不能保证视频已经准备好。

我是通过查看VideoView的源码发现的:

@Override
public int getDuration() {
if (isInPlaybackState()) {
return mMediaPlayer.getDuration();
}

return -1;
}

解决方案是为您的 VideoView 设置一个 OnPreparedListener,并在视频准备好后获取持续时间。然后,您可以使用几乎相同的 VideoView.getDuration()MediaPlayer.getDuration()

解决方法:

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
int duration = mp.getDuration();
int videoDuration = videoView.getDuration();
Log.d(TAG, String.format("onPrepared: duration=%d, videoDuration=%d", duration,
videoDuration);
}
seekBar.setMax(videoDuration);
});

关于android - videoview.getDuration() 返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31161290/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com