我有一个需要在循环中显示图像和视频的Android应用程序,播放视频没有问题,但是当它到达图像时,屏幕变为空白,没有任何反应。程序仍在运行,只是没有显示。
我正在使用SurfaceView.setBackground()
来绘制图像,因为在ImageView和播放视频的SurfaceView之间进行交换会导致问题。
我在显示视频时遇到了类似的问题,我通过删除等待视频准备的循环解决了这个问题,所以理想情况下我想删除循环,等待计时器过去。
我有一个功能,可以在旧媒体完成时显示新媒体,并在当前媒体完成时准备下一个媒体。如果媒体是视频,则从onComplete函数调用,该函数可以正常工作。但如果它是一个图像我有一个等待循环。
我想要做的是在图像显示所需的时间后调用MediaPlayer.onComplete()
函数。有这样的事吗?
答案 0 :(得分:0)
我已经将此更改为使用处理程序,因为我需要执行其他一些错误检查。然而另一种方式确实有效
mHandler.postdelayed(run, delay);
Runnable run = new Runnable(){
public void run()
{
//run function
}
};
我明白了。我创建了一个运行计时器的新线程,并在更新屏幕的主活动中调用一个函数。使用runOnUiThread()
调用更新屏幕的函数,以便它有权更改屏幕。
public class ImageTimer implements Runnable{
private long dur, cur,start;
private boolean needed, run;
private Activity mAct;
ImageTimer(boolean running, long duration, Activity act)
{
run = running;
dur = duration;
needed = false;
mAct = act;
}
@Override
public void run()
{
while(run)
{
if(needed)
{
start = System.currentTimeMillis();
cur = System.currentTimeMillis() - start;
while(cur < dur)
{
cur = System.currentTimeMillis() - start;
}
needed = false ;
mAct.runOnUiThread(new Runnable()
{
public void run()
{
MainActivity.ImageDone();
}
});
}
}
}