Android : 以动态时间间隔显示照片和视频
Android : Display Photos and Videos at dynamic time interval
我想以动态时间间隔显示照片和视频的数量。我的条件是
1) 以动态间隔显示照片
2)当有视频时,播放视频并停止任务,
3) 播放视频恢复线程或我们使用过的任何内容后。
我尝试使用线程,但视频出现问题,并且线程行为异常。有没有更好的解决方案或建议,
以下是我在 MainActivity.class
中的代码
timer = new Thread() {
public void run() {
try {
for (int z = 0; z < userStories.size(); z++) {
Log.e("File Name--->", userStories.get(z).getFileName());
Log.e("File TYPEEEE--->", userStories.get(z).getType());
if (userStories.get(z).getType().equalsIgnoreCase("photo")) {
Log.e("SLEEEEEPppp-->", "SO GAYA THREAD");
sleep(Long.parseLong(userStories.get(z).getDisplayTime()) * 1000);
final int finalZ = z;
runOnUiThread(new Runnable() {
@Override
public void run() {
image.setVisibility(View.VISIBLE);
video_view.setVisibility(View.GONE);
Glide.with(getApplicationContext())
.load(userStories.get(finalZ).getFileName())
.into(image);
}
});
} else if (userStories.get(z).getType().equalsIgnoreCase("video")) {
/*synchronized (this) {
Log.e("Waitttttt-->", "Wait kar riya he...");
wait();
}*/
final int finalZ2 = z;
runOnUiThread(new Runnable() {
@Override
public void run() {
image.setVisibility(View.GONE);
video_view.setVisibility(View.VISIBLE);
String VideoURL = userStories.get(finalZ2).getFileName();
uri = Uri.parse(VideoURL);
if (!TextUtils.isEmpty(VideoURL)) {
video_view.setVideoURI(uri);
video_view.requestFocus();
video_view.start();
video_view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
pauseWork = false;
}
});
video_view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Log.e("VIDEooooooo--->", "Completeeeee");
Log.e("Thread Notifyyyy--->", "Hooo Gayaaaaaa");
timer.interrupt();
}
});
}
}
});
/*synchronized (timer) {
Log.e("WAITTTTTT-->", "WAIT KAR RIYA HE");
timer.wait();
}*/
}
final int finalZ1 = z;
runOnUiThread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < userStories.size(); i++) {
if (i == finalZ1) {
dots[i].setImageDrawable(getResources().getDrawable(R.drawable.selecteditem_dot));
} else {
dots[i].setImageDrawable(getResources().getDrawable(R.drawable.nonselecteditem_dot));
}
}
}
});
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
}
}
};
timer.start();
提前感谢您的帮助
您可以改用处理程序,尝试下面的代码。首先你必须调用 CallNext() 方法。
private void bindHandler() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
callNext();
Log.e("In HANDLER------>", "HANDLER");
}
}, DISPLAY_LENGTH * 1000);
}
private void callNext() {
if (counter < statusModel.getStories().get(position).getUserStories().size()) {
if (statusModel.getStories().get(position).getUserStories().get(counter).getType().equalsIgnoreCase("photo")) {
Log.e("PHOTOOOO--->", "PHOTOOOOO");
String photo = statusModel.getStories().get(position).getUserStories().get(counter).getFileName();
image.setVisibility(View.VISIBLE);
video_view.setVisibility(View.GONE);
Glide.with(getApplicationContext())
.load(photo)
.into(image);
counter++;
DISPLAY_LENGTH = Long.parseLong(statusModel.getStories().get(position).getUserStories().get(counter).getDisplayTime());
Log.e("DIAPLAY TIME--->", String.valueOf(DISPLAY_LENGTH));
bindHandler();
} else {
if (statusModel.getStories().get(position).getUserStories().get(counter).getType().equalsIgnoreCase("video")) {
Log.e("VIDEOOOO--->", "VIDEOOOOO");
image.setVisibility(View.GONE);
video_view.setVisibility(View.VISIBLE);
String VideoURL = statusModel.getStories().get(position).getUserStories().get(counter).getFileName();
uri = Uri.parse(VideoURL);
if (!TextUtils.isEmpty(VideoURL)) {
video_view.setVideoURI(uri);
video_view.requestFocus();
video_view.start();
video_view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
}
});
video_view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Log.e("VIDEooooooo--->", "Completeeeee");
Log.e("Thread Notifyyyy--->", "Hooo Gayaaaaaa");
counter++;
callNext();
}
});
}
}
}
}
}
我想以动态时间间隔显示照片和视频的数量。我的条件是
1) 以动态间隔显示照片 2)当有视频时,播放视频并停止任务, 3) 播放视频恢复线程或我们使用过的任何内容后。
我尝试使用线程,但视频出现问题,并且线程行为异常。有没有更好的解决方案或建议,
以下是我在 MainActivity.class
中的代码timer = new Thread() {
public void run() {
try {
for (int z = 0; z < userStories.size(); z++) {
Log.e("File Name--->", userStories.get(z).getFileName());
Log.e("File TYPEEEE--->", userStories.get(z).getType());
if (userStories.get(z).getType().equalsIgnoreCase("photo")) {
Log.e("SLEEEEEPppp-->", "SO GAYA THREAD");
sleep(Long.parseLong(userStories.get(z).getDisplayTime()) * 1000);
final int finalZ = z;
runOnUiThread(new Runnable() {
@Override
public void run() {
image.setVisibility(View.VISIBLE);
video_view.setVisibility(View.GONE);
Glide.with(getApplicationContext())
.load(userStories.get(finalZ).getFileName())
.into(image);
}
});
} else if (userStories.get(z).getType().equalsIgnoreCase("video")) {
/*synchronized (this) {
Log.e("Waitttttt-->", "Wait kar riya he...");
wait();
}*/
final int finalZ2 = z;
runOnUiThread(new Runnable() {
@Override
public void run() {
image.setVisibility(View.GONE);
video_view.setVisibility(View.VISIBLE);
String VideoURL = userStories.get(finalZ2).getFileName();
uri = Uri.parse(VideoURL);
if (!TextUtils.isEmpty(VideoURL)) {
video_view.setVideoURI(uri);
video_view.requestFocus();
video_view.start();
video_view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
pauseWork = false;
}
});
video_view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Log.e("VIDEooooooo--->", "Completeeeee");
Log.e("Thread Notifyyyy--->", "Hooo Gayaaaaaa");
timer.interrupt();
}
});
}
}
});
/*synchronized (timer) {
Log.e("WAITTTTTT-->", "WAIT KAR RIYA HE");
timer.wait();
}*/
}
final int finalZ1 = z;
runOnUiThread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < userStories.size(); i++) {
if (i == finalZ1) {
dots[i].setImageDrawable(getResources().getDrawable(R.drawable.selecteditem_dot));
} else {
dots[i].setImageDrawable(getResources().getDrawable(R.drawable.nonselecteditem_dot));
}
}
}
});
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
}
}
};
timer.start();
提前感谢您的帮助
您可以改用处理程序,尝试下面的代码。首先你必须调用 CallNext() 方法。
private void bindHandler() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
callNext();
Log.e("In HANDLER------>", "HANDLER");
}
}, DISPLAY_LENGTH * 1000);
}
private void callNext() {
if (counter < statusModel.getStories().get(position).getUserStories().size()) {
if (statusModel.getStories().get(position).getUserStories().get(counter).getType().equalsIgnoreCase("photo")) {
Log.e("PHOTOOOO--->", "PHOTOOOOO");
String photo = statusModel.getStories().get(position).getUserStories().get(counter).getFileName();
image.setVisibility(View.VISIBLE);
video_view.setVisibility(View.GONE);
Glide.with(getApplicationContext())
.load(photo)
.into(image);
counter++;
DISPLAY_LENGTH = Long.parseLong(statusModel.getStories().get(position).getUserStories().get(counter).getDisplayTime());
Log.e("DIAPLAY TIME--->", String.valueOf(DISPLAY_LENGTH));
bindHandler();
} else {
if (statusModel.getStories().get(position).getUserStories().get(counter).getType().equalsIgnoreCase("video")) {
Log.e("VIDEOOOO--->", "VIDEOOOOO");
image.setVisibility(View.GONE);
video_view.setVisibility(View.VISIBLE);
String VideoURL = statusModel.getStories().get(position).getUserStories().get(counter).getFileName();
uri = Uri.parse(VideoURL);
if (!TextUtils.isEmpty(VideoURL)) {
video_view.setVideoURI(uri);
video_view.requestFocus();
video_view.start();
video_view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
}
});
video_view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Log.e("VIDEooooooo--->", "Completeeeee");
Log.e("Thread Notifyyyy--->", "Hooo Gayaaaaaa");
counter++;
callNext();
}
});
}
}
}
}
}