2017-09-19 3 views
0

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

+0

Je pense que vous pouvez utiliser JobScheduler. @Shruti –

+0

Postez ce que vous avez essayé jusqu'à maintenant – Akshay

+0

@Akhay, j'ai posté mon code – Shruti

Répondre

1

Vous pouvez utiliser gestionnaire à la place, essayez le code ci-dessous. Vous devez d'abord appeler la méthode 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(); 
         } 
        }); 
       } 
      } 
     } 
    } 

} 
+0

laissez-moi essayer et je vais revenir à vous, merci pour la réponse. – Shruti

+0

@Mustakim, ça marche, vous ... – Shruti