/**
   * Loads all metadata from the local music library into the in-app database.
   *
   * @param Activity activity
   * @param Globals globals
   */
  private void loadAllSongs(Activity activity, Globals g) {
    for (int i = 0; i < artists.size(); i++) {

      String artist = artists.get(i);
      final String where =
          MediaStore.Audio.AlbumColumns.ARTIST + "='" + artist.replace("'", "''") + "'";

      Cursor cursor =
          activity
              .getContentResolver()
              .query(
                  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                  null,
                  where,
                  null,
                  MediaStore.Audio.Albums.ARTIST + " ASC");

      ArrayList<String> albumList = new ArrayList<String>();

      while (cursor.moveToNext()) {
        String songTitle = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
        String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
        Song song = new Song(songTitle, path, true);

        String albumTitle = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
        song.setAlbum(albumTitle);
        song.setArtist(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));

        String artPath = "";
        if (albumTitle != "") {
          String trackNumString =
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TRACK));

          int trackNum;

          if (trackNumString != null && !trackNumString.equals("null")) {
            trackNum = Integer.parseInt(trackNumString);
          } else {
            trackNum = 0;
          }

          song.setTrackNum(trackNum);

          Cursor artCursor =
              activity
                  .getContentResolver()
                  .query(
                      MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                      new String[] {
                        MediaStore.Audio.Albums.ALBUM, MediaStore.Audio.Albums.ALBUM_ART
                      },
                      MediaStore.Audio.Albums.ALBUM + "=?",
                      new String[] {albumTitle},
                      null);

          if (artCursor.moveToFirst() && artCursor.getString(1) != null) {
            artPath = artCursor.getString(1);
          }

          song.setAlbumArt(artPath);
          artCursor.close();
        } else {
          song.setTrackNum(0);

          // SET DEFAULT ALBUM ART??
        }

        song.setIpAddr(g.getIpAddr());

        if (!albumList.contains(albumTitle)) {
          Song albumSong = new Song("DISPLAY_ALBUM", "", true);
          albumSong.setAlbum(albumTitle);
          albumSong.setArtist(
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));
          albumSong.setTrackNum(-1);
          albumSong.setAlbumArt(artPath);
          albumSong.setIpAddr(g.getIpAddr());
          g.db.addSongToLibrary(albumSong);
          albumList.add(albumTitle);
        }

        g.db.addSongToLibrary(song);
      }
      cursor.close();

      g.sendUIMessage(0);
    }
  }
Exemplo n.º 2
0
  public void testAttributes() {
    Song song = new Song("Song");
    assertEquals(song.getName(), "Song");

    song.setAlbum("Album");
    assertEquals(song.getAlbum(), "Album");

    song.setArtist("Artist");
    assertEquals(song.getArtist(), "Artist");

    song.setBeatsPerMinute(123);
    assertEquals(song.getBeatsPerMinute(), 123);

    song.setBitrate(192);
    assertEquals(song.getBitrate(), 192);

    song.setComment("Comment");
    assertEquals(song.getComment(), "Comment");

    song.setCompilation(true);
    assertEquals(song.isCompilation(), true);
    song.setCompilation(false);
    assertEquals(song.isCompilation(), false);

    song.setComposer("Composer");
    assertEquals(song.getComposer(), "Composer");

    song.setDataKind(SongDataKind.DAAP_STREAM);
    assertEquals(song.getDataKind(), SongDataKind.DAAP_STREAM);

    song.setDataUrl("http://www.somewhere.ee");
    assertEquals(song.getDataUrl(), "http://www.somewhere.ee");

    song.setDateAdded(9999999);
    assertEquals(song.getDateAdded(), 9999999);

    song.setDateModified(6666666);
    assertEquals(song.getDateModified(), 6666666);

    song.setDescription("Description");
    assertEquals(song.getDescription(), "Description");

    song.setDisabled(true);
    assertEquals(song.isDisabled(), true);
    song.setDisabled(false);
    assertEquals(song.isDisabled(), false);

    song.setDiscCount(100);
    assertEquals(song.getDiscCount(), 100);

    song.setDiscNumber(99);
    assertEquals(song.getDiscNumber(), 99);

    song.setEqPreset(SongEqPreset.LATIN);
    assertEquals(song.getEqPreset(), SongEqPreset.LATIN);

    song.setFormat(SongFormat.M4A);
    assertEquals(song.getFormat(), SongFormat.M4A);

    song.setGenre(SongGenre.NEW_AGE);
    assertEquals(song.getGenre(), SongGenre.NEW_AGE);

    song.setGrouping("Grouping");
    assertEquals(song.getGrouping(), "Grouping");

    song.setRelativeVolume(50);
    assertEquals(song.getRelativeVolume(), 50);

    song.setSampleRate(44100);
    assertEquals(song.getSampleRate(), 44100);

    song.setSize(6 * 1024 * 1024);
    assertEquals(song.getSize(), 6 * 1024 * 1024);

    song.setStartTime(3333333);
    assertEquals(song.getStartTime(), 3333333);

    song.setStopTime(4444444);
    assertEquals(song.getStopTime(), 4444444);

    song.setTime(5555555);
    assertEquals(song.getTime(), 5555555);

    song.setTrackCount(88);
    assertEquals(song.getTrackCount(), 88);

    song.setTrackNumber(87);
    assertEquals(song.getTrackNumber(), 87);

    song.setUserRating(SongUserRating.FOUR);
    assertEquals(song.getUserRating(), SongUserRating.FOUR);

    song.setYear(2004);
    assertEquals(song.getYear(), 2004);
  }