- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试开发一个 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/
下面是我正在使用的代码。我正在使用一个 vimeo 视频 url,它在我第一次加载 Activity 时工作正常,但在第二次调用 Activity 时出现问题,它显示消息尝试在无效的媒体播放器上调用
当我播放第一首歌曲时,它绝对没问题,但下次我收到标题文本的错误消息时,我在 mPlayer.prepare() 中收到错误,请提供帮助... mPlayer.reset(); mPlayer.setO
我使用下面的代码从 URL 播放 MP4 视频(H.264,AAC 编解码器)(该 url 非常好,没有重定向,404 或任何东西)。但是,我不断收到错误“在没有有效媒体播放器的情况下尝试调用 get
MediaPlayer 的 getDuration() 方法为我提供了一些音频文件的错误值。我认为所有这些文件的共同特征是它们是使用 Audacity 或其他一些音频编辑工具进行处理的。尝试将 Med
我正在尝试获取音频文件的持续时间。为此,我使用以下代码: $.fntReproducir=function(){ //obtenemos una instancia del elemento
我目前正在处理 com.sun.management.GcInfo 类的一些烦恼。我通过添加 GC 通知监听器改进了我们的服务器日志。每当发生主要 GC 时,我都会记录它所花费的持续时间(以及其他一些
我正在使用 android MediaPlayer 库来播放一些 MP3 文件。我不负责这些文件,也无法更改它们,只能播放它们。 我当前更新了一个进度条,显示用户当前浏览文件的进度,将进度条的最大值设
在我的 listView 中,我正在显示一些来自 API 的媒体内容。 API 不包含有关媒体持续时间的任何信息,因此我想我应该创建一个帮助程序类来处理这个问题。 public static Stri
我对 android MediaPlayer 的 getduration() 方法有以下问题。例如以下文件(文件的实际持续时间为 5747000 毫秒): File to test it 准备好 Me
我正在尝试开发一个 Android 应用程序来播放原始文件夹中的视频。我正在使用自定义控制选项。 getduration() 返回 -1,所以我不能为我的搜索栏设置最大值。这是我的代码 private
我正在使用搜索栏播放 SD 卡中的歌曲。在获取歌曲的持续时间时,我得到了Attempt to call getDuration without a valid mediaplayer and ille
我完全迷失了。我发现代码非常简单,并且在文档中没有找到为什么会返回那么大的负数的任何原因。代码如下 private int getDuration(String audioPath) throws E
创建一个 MediaPlayer。特定类具有播放、暂停和恢复的功能。我正在尝试制作一个 SeekBar 来显示进度。SeekBar 需要作为 maxlength 的值,它是从调用 mediaplaye
我正在开发一款应用,用户可以在该应用中通过 MediaPlayer 播放音乐。 我遇到的问题是,当调用 getDuration() 方法时,用户编辑过的媒体文件给出了不正确的值。我做了一些实验,似乎经
本文整理了Java中java.time.zone.ZoneOffsetTransition.getDuration()方法的一些代码示例,展示了ZoneOffsetTransition.getDura
我写了下面这段代码 Media hit = new Media(dir); MediaPlayer player = new MediaPlayer(hit); runMedia run = new
我目前正在尝试设计一个简单的应用程序来播放音乐播放器。我有歌曲的 URL,正在设置 MediaPlayer,如下所示。第一首歌曲一切正常,但当我播放另一首歌曲时,程序在模拟时没有崩溃,但没有播放任何内
我想将数据源的持续时间放入 TextView 我的代码是 mp.setDataSource(URL); mp.prepare(); mp.start()
我一直在我的网站上实现 youtube API,例如 playVideo() 工作正常,所以我想实现没有任何问题..但是 getDuration() 得到一个错误(不是这样的函数错误) 我就是这样尝试
我一直在尝试使用 ExoPlayer 流式传输 URL。网址: STREAM_URL_1 =“http://storage.googleapis.com/exoplayer-test-media-0/
我是一名优秀的程序员,十分优秀!