コード例 #1
0
    @Override
    public void run() {
      try {
        String line;
        while ((line = reader.readLine()) != null) {
          Matcher matcher = Pattern.compile(MediaInfo.INPUT_PATTERN).matcher(line);
          if (matcher.find()) {
            currentMediaInfo = new MediaInfo();
            mediaInfos.add(currentMediaInfo);
            continue;
          }

          matcher = Pattern.compile(MediaInfo.DURATION_PATTERN).matcher(line);
          if (matcher.find()) {
            currentMediaInfo.setDuration(matcher.group(1));
            currentMediaInfo.setBitrate(matcher.group(4));
            continue;
          }

          matcher = Pattern.compile(VideoStreamInfo.PATTERN).matcher(line);
          if (matcher.find()) {
            VideoStreamInfo videoStreamInfo = new VideoStreamInfo();
            videoStreamInfo.setId(matcher.group(1));
            videoStreamInfo.setLanguage(matcher.group(3));
            videoStreamInfo.setEncoder(matcher.group(4));
            videoStreamInfo.setResolution(matcher.group(6));
            videoStreamInfo.setDefaultStream(matcher.group(8) != null);
            currentMediaInfo.getVideoStreams().add(videoStreamInfo);
            continue;
          }

          matcher = Pattern.compile(AudioStreamInfo.PATTERN).matcher(line);
          if (matcher.find()) {
            AudioStreamInfo audioStreamInfo = new AudioStreamInfo();
            audioStreamInfo.setId(matcher.group(1));
            audioStreamInfo.setLanguage(matcher.group(3));
            audioStreamInfo.setEncoder(matcher.group(4));
            audioStreamInfo.setFrequency(matcher.group(6));
            audioStreamInfo.setChannels(matcher.group(7));
            audioStreamInfo.setDefaultStream(matcher.group(8) != null);

            currentMediaInfo.getAudioStreams().add(audioStreamInfo);
          }
        }
      } catch (Exception e) {
        /* ignore */
      } finally {
        try {
          reader.close();
        } catch (IOException e) {
          /* ignore */
        }
      }
    }
コード例 #2
0
  /** get audios form {@link MediaStore.Audio.Media.EXTERNAL_CONTENT_URI} */
  public List<MediaInfo> getAudioInfo() {
    List<MediaInfo> list = new ArrayList<MediaInfo>();
    Cursor cursor =
        context
            .getContentResolver()
            .query(
                DreamConstant.AUDIO_URI,
                null,
                null,
                null,
                MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

    if (null == cursor) {

    } else {
      if (cursor.moveToFirst()) {
        MediaInfo mediaInfo = null;
        do {
          mediaInfo = new MediaInfo();
          long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media._ID)); // 音乐id
          String title =
              cursor.getString((cursor.getColumnIndex(MediaStore.Audio.Media.TITLE))); // 音乐标题
          // Log.d("Yuri", title);
          String artist =
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)); // 艺术家
          String album =
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)); // 专辑
          long albumId = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
          long duration =
              cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); // 时长
          long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE)); // 文件大小
          String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); // 文件路径
          int isMusic =
              cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC)); // 是否为音乐
          if (isMusic != 0) { // 只把音乐添加到集合当中
            mediaInfo.setId(id);
            mediaInfo.setDisplayName(title);
            mediaInfo.setArtist(artist);
            mediaInfo.setAlbum(album);
            mediaInfo.setAlbumId(albumId);
            mediaInfo.setDuration(duration);
            mediaInfo.setSize(size);
            mediaInfo.setUrl(url);
            list.add(mediaInfo);
          }
        } while (cursor.moveToNext());
      }
      cursor.close();
    }

    return list;
  }
コード例 #3
0
  /** get videos form {@link MediaStore.Video.Media.EXTERNAL_CONTENT_URI} */
  public List<MediaInfo> getVideoInfo() {
    List<MediaInfo> list = new ArrayList<MediaInfo>();
    ContentResolver contentResolver = context.getContentResolver();
    Cursor cursor =
        contentResolver.query(
            DreamConstant.VIDEO_URI, null, null, null, MediaStore.Video.Media.DEFAULT_SORT_ORDER);

    if (null == cursor) {

    } else {
      if (cursor.moveToFirst()) {
        MediaInfo mediaInfo = null;
        do {
          mediaInfo = new MediaInfo();
          long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media._ID));
          long duration =
              cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.DURATION)); // 时长
          long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.SIZE)); // 文件大小
          String url = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA)); // 文件路径
          String displayName =
              cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME));
          if (new File(url).exists()) {
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inDither = false;
            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
            // get video thumbail
            Bitmap bitmap =
                MediaStore.Video.Thumbnails.getThumbnail(
                    contentResolver, id, Images.Thumbnails.MICRO_KIND, options);
            mediaInfo.setId(id);
            mediaInfo.setDuration(duration);
            mediaInfo.setSize(size);
            mediaInfo.setUrl(url);
            mediaInfo.setDisplayName(displayName);
            mediaInfo.setIcon(bitmap);
            list.add(mediaInfo);
          }

        } while (cursor.moveToNext());
      }
      cursor.close();
    }

    return list;
  }