代码之家  ›  专栏  ›  技术社区  ›  Shruti

Android:以动态时间间隔显示照片和视频

  •  0
  • Shruti  · 技术社区  · 8 年前

    2) 当有视频时,播放视频并停止任务, 3) 播放完视频后,恢复线程或我们使用过的任何内容。

    以下是我在MainActivity中的代码。班

    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();
    

    提前谢谢你的帮助

    1 回复  |  直到 8 年前
        1
  •  1
  •   Mushtakim Ahmed Ansari    8 年前

    您可以改为使用处理程序,请尝试下面的代码。首先,必须调用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();
                            }
                        });
                    }
                }
            }
        }
    
    }