Je souhaite afficher le nombre de photos et de vidéos à un intervalle de temps dynamique. Mes conditions sontAndroid: Afficher les photos et les vidéos avec un intervalle de temps dynamique
1) Afficher la photo à intervalle dynamique 2) Lorsque la vidéo est là, lire la vidéo et arrêter la tâche, 3) Après la lecture du fil de reprise vidéo ou tout ce que nous avons utilisé.
Je l'ai essayé en utilisant Thread, mais la vidéo pose problème, et le thread se comporte de manière inattendue. Y at-il une meilleure solution ou suggestion,
Après mon code dans 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();
Merci pour l'aide à l'avance
Je pense que vous pouvez utiliser JobScheduler. @Shruti –
Postez ce que vous avez essayé jusqu'à maintenant – Akshay
@Akhay, j'ai posté mon code – Shruti