Android视频播放项目总结之 得到手机中的所有视频数据

来源:互联网 发布:淘宝上的代购靠谱吗 编辑:程序博客网 时间:2024/05/16 10:27

开子线程handler内容提供者得到手机中的所有视频数据。

由于手机中的视频是别的程序读出来存到数据库中的,我们只能跨项目访问数据库中的数据,所以我们才会
使用内容提供者,访问到数据。

核心代码如下:

得到视频数据,并且分装到对象中,再把对象放到list中。

 private void getVideodData() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                listItems = new ArrayList<VideoItem>();
                Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                String[] projection = { MediaStore.Video.Media.DISPLAY_NAME,
                        MediaStore.Video.Media.DURATION, MediaStore.Video.Media.SIZE,
                        MediaStore.Video.Media.DATA };
                Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
                while (cursor.moveToNext()) {
                    String name = cursor.getString(0);//视频的名称
                    long duration = cursor.getLong(1);//视频的时长
                    long size = cursor.getLong(2);//视频的大小
                    String data = cursor.getString(3);//视频sd卡下的绝对路劲
                    //一个视频信息对应一个对象
                    VideoItem item = new VideoItem();
                    item.setName(name);
                    item.setDuration(duration);
                    item.setSize(size);
                    item.setData(data);


                    listItems.add(item);
                }


                cursor.close();
                Message message = handler.obtainMessage();
                int what = 1;
                handler.sendEmptyMessage(what);


            }
        }).start();


    }

    /**
     * handler接收到消息判断是否有数据,如果有数据那就把数据绑定到listview中
     */

    Handler                 handler   = new Handler() {
                                          public void handleMessage(android.os.Message msg) {
                                              /*
                                               * 绑定适配器步骤:
                                               * 得到数据
                                               * 实例化适配器
                                               * 绑定适配器
                                               */
                                              if (msg.what == 1) {
                                                  if (listItems != null && listItems.size() > 0) {
                                                      //有视频
                                                      videolist_tv_ondata.setVisibility(View.GONE);
                                                      MyBaseAdapter adapter = new MyBaseAdapter(
                                                          listItems, VideoListActivity.this);
                                                      videolist_lv_list.setAdapter(adapter);


                                                  } else {
                                                      //没有视频
                                                      videolist_tv_ondata
                                                          .setVisibility(View.VISIBLE);


                                                  }


                                              }


                                          };
                                      };

 

      
    

0 0
原创粉丝点击