Пример #1
0
    /**
     * Gather and parse all song track information necessary after change.
     *
     * @param params A {@code MPDStatus} object array.
     * @return A null {@code Void} object, ignore it.
     */
    @Override
    protected final Music doInBackground(final Void... params) {
      try {
        mMPDStatus.waitForValidity();
        mApp.getMPD().getPlaylist().waitForValidity();
      } catch (final InterruptedException ignored) {
      }

      final Music currentTrack = mApp.getMPD().getCurrentTrack();

      if (currentTrack != null) {
        if (currentTrack.isStream()) {
          final String title = currentTrack.getTitle();

          if (title != null && !title.isEmpty()) {
            mAlbumName = currentTrack.getName();
            mTitle = currentTrack.getTitle();
          } else {
            mTitle = currentTrack.getName();
          }

          mArtistName = currentTrack.getArtistName();
          mAlbumInfo = new AlbumInfo(mArtistName, mAlbumName);
        } else {
          mAlbumName = currentTrack.getAlbumName();

          mDate = Long.toString(currentTrack.getDate());
          if (mDate.isEmpty() || mDate.charAt(0) == '-') {
            mDate = "";
          } else {
            mDate = " - " + mDate;
          }

          mTitle = currentTrack.getTitle();
          mTitle = addDiscAndTrackNumber(mTitle, currentTrack);
          setArtist(currentTrack);
          mAlbumInfo = new AlbumInfo(currentTrack);
        }
        mHasCoverChanged = hasCoverChanged();
        mTrackRating = getTrackRating(currentTrack);

        if (DEBUG) {
          Log.i(TAG, toString());
        }
      }

      mLastAlbum = mAlbumName;
      mLastArtist = mArtistName;

      return currentTrack;
    }