예제 #1
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");
      }
    }
  }
예제 #2
0
  /** Uses the download URL of a media object of a feeditem to read its ID3 chapters. */
  public static void readID3ChaptersFromPlayableStreamUrl(Playable p) {
    if (AppConfig.DEBUG) Log.d(TAG, "Reading id3 chapters from item " + p.getEpisodeTitle());
    if (p != null && p.getStreamUrl() != null) {
      InputStream in = null;
      try {
        URL url = new URL(p.getStreamUrl());
        ChapterReader reader = new ChapterReader();

        in = url.openStream();
        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 (MalformedURLException e) {
        e.printStackTrace();
      } 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: media or download URL was null");
    }
  }