示例#1
0
 public static void loadChaptersFromFileUrl(Playable media) {
   if (media.localFileAvailable()) {
     ChapterUtils.readID3ChaptersFromPlayableFileUrl(media);
     if (media.getChapters() == null) {
       ChapterUtils.readOggChaptersFromPlayableFileUrl(media);
     }
   } else {
     Log.e(TAG, "Could not load chapters from file url: local file not available");
   }
 }
示例#2
0
  /** Uses the file URL of a media object of a feeditem to read its ID3 chapters. */
  public static void readID3ChaptersFromPlayableFileUrl(Playable p) {
    if (AppConfig.DEBUG) Log.d(TAG, "Reading id3 chapters from item " + p.getEpisodeTitle());
    if (p != null && p.localFileAvailable() && p.getLocalMediaUrl() != null) {
      File source = new File(p.getLocalMediaUrl());
      if (source.exists()) {
        ChapterReader reader = new ChapterReader();
        InputStream in = null;

        try {
          in = new BufferedInputStream(new FileInputStream(source));
          reader.readInputStream(in);
          List<Chapter> chapters = reader.getChapters();

          if (chapters != null) {
            Collections.sort(chapters, new ChapterStartTimeComparator());
            processChapters(chapters, p);
            if (chaptersValid(chapters)) {
              p.setChapters(chapters);
              Log.i(TAG, "Chapters loaded");
            } else {
              Log.e(TAG, "Chapter data was invalid");
            }
          } else {
            Log.i(TAG, "ChapterReader could not find any ID3 chapters");
          }
        } catch (IOException e) {
          e.printStackTrace();
        } catch (ID3ReaderException e) {
          e.printStackTrace();
        } finally {
          if (in != null) {
            try {
              in.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
        }
      } else {
        Log.e(TAG, "Unable to read id3 chapters: Source doesn't exist");
      }
    }
  }