SD卡视频内容显示(专辑明智)(android)

时间:2014-03-03 10:37:56

标签: android video

大家好我正在制作一个Android应用程序,我必须显示SD卡的所有视频内容(专辑明智).....这意味着当我们将加载应用程序时,只显示相册的名称....当我们点击特定的专辑时,应该显示ITS视频文件...................我能够显示专辑名称但问题是如果有相同的专辑名称(即IF TWO VIDEO文件属于同一专辑)则会显示两张不同的专辑...........所以我希望所有同一专辑的视频都在一个&# 34;专辑名称" ............点击该专辑名称"应显示其所有视频内容" 任何帮助将在下面是主要类(AlbumVideo.class)

       public class AlbumVideo extends Activity  {
  private Cursor audiocursor;
  private int audio_column_index;
  ListView audiolist;
  int count;
  int album=1;

  int dura;
  int i1 =R.drawable.ic_launcher;


  @Override
  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.imagexml1);

        init_phone_videos_grid();


  }

  @SuppressWarnings("deprecation")
private void init_phone_videos_grid() {
        System.gc();
        final String[] projection = new String[] { 
                MediaStore.Video.VideoColumns.ALBUM };
        final String sortOrder = VideoColumns.ALBUM + " COLLATE LOCALIZED ASC";
      audiocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                                    projection, null, null, sortOrder);


        count = audiocursor.getCount();
       audiolist = (ListView) findViewById(R.id.PhoneVideo);
        audiolist.setAdapter(new AudioAdapter(getApplicationContext()));

      audiolist.setOnItemClickListener(videogridlistener);

  }
  private OnItemClickListener videogridlistener = new OnItemClickListener() {
        @SuppressWarnings("rawtypes")
        public void onItemClick(AdapterView parent, View v, int position,

  long id) {

              System.gc();
              audio_column_index = audiocursor

                        .getColumnIndexOrThrow(MediaStore.Video.VideoColumns.ALBUM);
                                     audiocursor.moveToPosition(position);
                                      String filename = audiocursor.getString(audio_column_index); 
                                      Intent intent = new Intent(AlbumVideo.this,
                                               AlbumVideoDetail.class);
                                               intent.putExtra("albumfilename",filename);
                                               intent.putExtra("album",album);

                                               startActivity(intent);

        }
  };




  public class AudioAdapter extends BaseAdapter 
  {
        private Context vContext;
        CheckBox cb;
        int position=0;
        int check=0;
        String a[]=new String[count];

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

        public int getCount() {
              return count;
        }

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

        public long getItemId(int position) {
              return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
              System.gc();
              LayoutInflater inflater = getLayoutInflater();

              View row;

              row = inflater.inflate(R.layout.list_item1, parent, false);

              final Button title = (Button) row.findViewById(R.id.button);

              title.setTextColor(Color.parseColor("#000000"));

              if (convertView == null) {

                  audio_column_index =audiocursor.getColumnIndexOrThrow(MediaStore.Video.VideoColumns.ALBUM );

                  audiocursor.moveToPosition(position);
                   String   TITLE = audiocursor.getString(audio_column_index);
                   String a[]=new String[count];
                   Toast.makeText(AlbumVideo.this, "music will be available shortly"+TITLE, Toast.LENGTH_LONG).show();




                  title.setText(TITLE);

              }

              return (row);  
        }


  }

}

和第二个显示特定专辑歌曲的课程是(" AlbumVideoDetail.class")

        public class AlbumVideoDetail extends Activity  {
  private Cursor videocursor;
  private int video_column_index;
  ListView videolist;
  int count;
  String title=null;
  String desc=null;
  int dura;
  int i1 =R.drawable.ic_launcher;
  String filename;


  @Override
  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.imagexml);
        Intent i = getIntent();
        Bundle extras = i.getExtras();
   filename = extras.getString("albumfilename");
//     String filename1 = filename.substring(filename.indexOf("sdcard"),filename.length());
  //   String filename2= filename1.substring(7);
     Toast.makeText(AlbumVideoDetail.this, "music will be available shortly"+filename, Toast.LENGTH_LONG).show();
        init_phone_videos_grid();


  }

  @SuppressWarnings("deprecation")
private void init_phone_videos_grid() {
        System.gc();
        String[] proj = { MediaStore.Video.Media.DATA,
                MediaStore.Video.Media._ID, MediaStore.Video.Media.TITLE,
                MediaStore.Video.Media.DISPLAY_NAME,
                MediaStore.Video.Media.MIME_TYPE,
                MediaStore.Video.Media.DURATION,
                MediaStore.Video.Media.SIZE,};
        String where = android.provider.MediaStore.Video.Media.ALBUM + "=?";
        String whereVal[] = { filename };
        String orderBy = android.provider.MediaStore.Video.Media.TITLE;





       videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                proj, where, whereVal, orderBy);



        count = videocursor.getCount();
      videolist = (ListView) findViewById(R.id.PhoneVideoList);
      videolist.setAdapter(new VideoAdapter(getApplicationContext()));


  }


  public class VideoAdapter extends BaseAdapter {
        private Context vContext;
       CheckBox cb;
       int position=0;
     int check=0;

        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;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
              System.gc();
              LayoutInflater inflater = getLayoutInflater();

              View row;

              row = inflater.inflate(R.layout.list_item2, parent, false);
              final TextView title = (TextView) row.findViewById(R.id.title);
              TextView desc = (TextView) row.findViewById(R.id.desc);
              TextView dura = (TextView) row.findViewById(R.id.duration);






              title.setTextColor(Color.parseColor("#000000"));
              desc.setTextColor(Color.parseColor("#000000"));
              dura.setTextColor(Color.parseColor("#000000"));





              if (convertView == null) {

                 video_column_index =videocursor

 .getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
                   videocursor.moveToPosition(position);
                 final String   TITLE = videocursor.getString(video_column_index);
                 title.setText(TITLE);



              video_column_index = videocursor

  .getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
                    videocursor.moveToPosition(position);
                    String DESC= videocursor.getString(video_column_index);
                    int desd=Integer.parseInt(DESC);
                    int kb = (int) ((desd / 1000) % 1000);
                      int mb = (int) ((desd / 1000) / 1000);
                      String KB=Integer.toString(kb);
                      String MB=Integer.toString(mb);
                      String DESC1 = MB + "." + KB +"mb";

                  desc.setText(DESC1);   
                  video_column_index = videocursor

                          .getColumnIndexOrThrow(MediaStore.Video.Media.DURATION);
                                            videocursor.moveToPosition(position);
                                          String DURA=  videocursor.getString(video_column_index);
                                          int duro = Integer.parseInt(DURA);
                                          int seconds = (int) ((duro / 1000) % 60);
                                          int minutes = (int) ((duro / 1000) / 60);
                                          String secs=Integer.toString(seconds);
                                          String mins=Integer.toString(minutes);
                                          String DURA1 = mins + ":" + secs;


                                          dura.setText(DURA1);
                                          video_column_index = videocursor

                                        .getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
                                                      videocursor.moveToPosition(position);

        final  String filename = videocursor.getString(video_column_index); 


         } return (row);  
 }


  }
       }

2 个答案:

答案 0 :(得分:1)

在网上花了这么多时间后终于找到了解决方案!!!!!!!这是一个简单的非常短的步骤。,] [.....我希望它对某人有帮助..........

      private void init_phone_videos_grid() {
    System.gc();
    String[] proj = { MediaStore.Video.Media.DATA,
            MediaStore.Video.Media._ID, MediaStore.Video.Media.TITLE,
            MediaStore.Video.Media.DISPLAY_NAME,
            MediaStore.Video.Media.MIME_TYPE,
            MediaStore.Video.Media.DURATION,
            MediaStore.Video.Media.SIZE,};
    String where = android.provider.MediaStore.Video.Media.ALBUM + "=?";
    String whereVal[] = { filename };
    String orderBy = android.provider.MediaStore.Video.Media.TITLE;





   videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, "DISTINCT "
            +proj, where, whereVal, orderBy);



    count = videocursor.getCount();
  videolist = (ListView) findViewById(R.id.PhoneVideoList);
  videolist.setAdapter(new VideoAdapter(getApplicationContext()));

}

只需在“专辑详细信息”类中添加“distinct”一词...... n它会根据您的要求对查询进行排序....

答案 1 :(得分:0)

更改以下内容:

final String[] projection = new String[] {MediaStore.Video.VideoColumns.ALBUM };

进入

final String[] projection = new String[]{ "DISTINCT " +MediaStore.Video.VideoColumns.ALBUM};