sumanth g Ответов: 1

Невозможно зациклить видео одно за другим


У меня было 21 видео во внутренней папке, с помощью videocursor.getcount () он смог подсчитать все видео.и показывает правильный путь к файлу.
но когда я ставлю "for loop", чтобы воспроизвести все видео, но это было возможно, чтобы воспроизвести все видео.это было только последнее видео.
И он не играл в петлю.


package com.example.videolist;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.VideoView;

public class VideoActivity extends Activity {
      private Cursor videocursor;
      private int video_column_index;
      ListView videolist;
      int count;
          String name = null;
       VideoView video_player_view;
    DisplayMetrics dm;
    SurfaceView sur_View;
    MediaController media_Controller;
    
       public class MediaFileInfo {

           private String fileName,filePath,fileType;

           public String getFileName() {
               return fileName;
           }

           public void setFileName(String fileName) {
               this.fileName = fileName;
           }

           public String getFilePath() {
               return filePath;
           }

           public void setFilePath(String filePath) {
               this.filePath = filePath;
           }

           public String getFileType() {
               return fileType;
           }

           public void setFileType(String fileType) {
               this.fileType = fileType;
           }
       }
       @Override
      public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
          System.gc();
       
            setContentView(R.layout.main);
            init_phone_video_grid();
      }

      private void init_phone_video_grid() {
            System.gc();
            String[] proj = { MediaStore.Video.Media._ID,
                    MediaStore.Video.Media.DATA,
                    MediaStore.Video.Media.DISPLAY_NAME,
                    MediaStore.Video.Media.SIZE };
                     videocursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,proj,null, null, null);

          
            count = videocursor.getCount();
            Log.d("count:", String.valueOf(count));
            videolist = (ListView) findViewById(R.id.VideoList);
            videolist.setAdapter(new VideoAdapter(getApplicationContext()));
          
            Log.d("No of Video",""+count);




         for(int i=0; i< count; i++) {
               Log.d("i", String.valueOf(i));
               MediaFileInfo mediaFileInfo =new MediaFileInfo();
          video_column_index =videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
          videocursor.moveToPosition(i);
            // Log.d("getcolumn", String.valueOf(videocursor.moveToPosition(i)));
               name = videocursor.getString(video_column_index);
               mediaFileInfo.setFileName(name);
               Log.d("name",name);
               int column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
               Log.d("column_index", String.valueOf(column_index));
               videocursor.moveToPosition(i);

               String filepath = videocursor.getString(column_index);
             Log.d("last i", String.valueOf(i));
             Log.d("filepath",filepath);
               mediaFileInfo.setFilePath(filepath);
              video_player_view = (VideoView) findViewById(R.id.videoView);
              media_Controller = new MediaController(this);
              dm = new DisplayMetrics();
              this.getWindowManager().getDefaultDisplay().getMetrics(dm);
              int height = dm.heightPixels;
              int width = dm.widthPixels;
              video_player_view.setMinimumWidth(width);
              video_player_view.setMinimumHeight(height);

                  video_player_view.setMediaController(media_Controller);
              Log.d("last i", String.valueOf(i));
              Log.d("filepath",filepath);

         
                     for(i=0;i<videocursor.getCount();i++){
                         video_player_view.setVideoPath(filepath);
                    
                         video_player_view.requestFocus();
                         video_player_view.start();
            
             }

              video_player_view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                  public void onCompletion(MediaPlayer player) {
                      Log.i("VideoView", "onCompletion()");
                      /
                      video_player_view.requestFocus();

                      video_player_view.start();
                  }

              });



          }

      }






      public class VideoAdapter extends BaseAdapter {
            private Context vContext;

                  public VideoAdapter(Context c) {
                        vContext = c;
            }

            public int getCount() {
                  return count;
            }

            public Object getItem(int position) {
                  return position;
            }

            public long getItemId(int position) {
                  return position;
            }
@Override
            public View getView(int position, View convertView, ViewGroup parent) {
                  System.gc();

                  TextView tv = new TextView(vContext.getApplicationContext());

                  String id = null;
                  if (convertView == null) {
                        video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
                        videocursor.moveToPosition(position);
                       id = videocursor.getString(video_column_index);
                       

                       tv.setText(id);

                  } else
                        tv = (TextView) convertView;
                 return tv;
            }
      }

}


Что я уже пробовал:

устал пока и делать пока петлю бесполезно.

1 Ответов

Рейтинг:
0

Darren_vms

прокомментируйте это на данный момент

setOnCompletionListener

Это проблема, и я не уверен, что вы с ней делаете.

for(i=0;i<videocursor.getcount();i++){>
   video_player_view.setVideoPath(filepath);


удалите второй цикл for {} вокруг пути, requestfocus и start. Вы даже можете удалить setvideopath, как вы это сделали выше в коде. Должно быть, мне что-то мерещилось.

/Даррен


sumanth g

Я удалил петлю, но она также не воспроизводилась в видео один за другим, она обычно воспроизводила последнее 21-е видео.