@Override
  public void onSongUpdate(int songID) {
    PlaylistItem songInfo = MusicUtils.getInfoPack(context, songID, false);

    songTitle = songInfo.song;
    songArtist = songInfo.artist;
    Bitmap bitmap = MusicUtils.getArtwork(context, songInfo.albumId, 2);
    if (bitmap == null) {
      coverArt = null;
    } else {
      coverArt =
          Bitmap.createScaledBitmap(bitmap, notificationIconPixels, notificationIconPixels, false);
    }

    updateNotificationContent();
  }
Пример #2
0
  private void bindView(Cursor cursor) {
    long id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns._ID));
    File file =
        new File(
            cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.DATA)));
    String mimeType =
        cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.MIME_TYPE));
    String title =
        cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.TITLE));
    String album =
        cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM));
    String artist =
        cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ARTIST));
    String composer =
        cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.COMPOSER));
    int duration =
        cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.DURATION));
    String year =
        cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.YEAR));
    Date dateAdded =
        new Date(
            cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.DATE_ADDED))
                * 1000);

    ((TextView) getView().findViewById(R.id.title)).setText(title);
    ((TextView) getView().findViewById(R.id.artist)).setText(artist);
    ((TextView) getView().findViewById(R.id.composer)).setText(composer);
    ((TextView) getView().findViewById(R.id.album)).setText(album);
    IdAndName genre = MusicUtils.fetchGenre(getActivity(), id);
    if (genre != null) {
      ((TextView) getView().findViewById(R.id.genre)).setText(genre.name);
    }
    ((TextView) getView().findViewById(R.id.year)).setText(year);
    ((TextView) getView().findViewById(R.id.duration))
        .setText(MusicUtils.formatDuration(getActivity(), duration));
    ((TextView) getView().findViewById(R.id.folder)).setText(file.getParent());
    ((TextView) getView().findViewById(R.id.filename)).setText(file.getName());
    ((TextView) getView().findViewById(R.id.filesize)).setText(formatFileSize(file.length()));
    ((TextView) getView().findViewById(R.id.mimetype)).setText(mimeType);
    ((TextView) getView().findViewById(R.id.date_added)).setText(formatDate(dateAdded));
    ((TextView) getView().findViewById(R.id.id)).setText(String.valueOf(id));
  }
Пример #3
0
 public void onClick(View v) {
   // delete the selected item(s)
   MusicUtils.deleteTracks(DeleteItems.this, mItemList);
   finish();
 }
Пример #4
0
  @Override
  public boolean onMenuItemClick(MenuItem item) {
    if (item.getGroupId() == getGroupId()) {
      switch (item.getItemId()) {
        case FragmentMenuItems.REMOVE_FROM_RECENT:
          RecentStore.getInstance(mActivity).removeItem(getId());
          MusicUtils.refresh();
          return true;
        case FragmentMenuItems.PLAY_SELECTION:
          MusicUtils.playAll(mActivity, getIdList(), 0, getSourceId(), getSourceType(), false);
          return true;
        case FragmentMenuItems.ADD_TO_QUEUE:
          MusicUtils.addToQueue(mActivity, getIdList(), getSourceId(), getSourceType());
          return true;
        case FragmentMenuItems.ADD_TO_PLAYLIST:
          ContextMenuBuilder builder = new ContextMenuBuilder(mActivity);
          MusicUtils.makePlaylistMenu(mActivity, getGroupId(), builder);
          builder.setHeaderTitle(R.string.add_to_playlist);
          builder.setCallback(
              new MenuBuilder.Callback() {
                @Override
                public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) {
                  return onMenuItemClick(item);
                }

                @Override
                public void onMenuModeChange(MenuBuilder menu) {
                  // do nothing
                }
              });
          builder.show(null, null);
          return true;
        case FragmentMenuItems.NEW_PLAYLIST:
          CreateNewPlaylist.getInstance(getIdList()).show(mFragmentManager, "CreatePlaylist");
          return true;
        case FragmentMenuItems.RENAME_PLAYLIST:
          RenamePlaylist.getInstance(getId()).show(mFragmentManager, "RenameDialog");
          return true;
        case FragmentMenuItems.PLAYLIST_SELECTED:
          final long mPlaylistId = item.getIntent().getLongExtra("playlist", 0);
          MusicUtils.addToPlaylist(mActivity, getIdList(), mPlaylistId);
          return true;
        case FragmentMenuItems.MORE_BY_ARTIST:
          NavUtils.openArtistProfile(mActivity, getArtistName());
          return true;
        case FragmentMenuItems.DELETE:
          onDeleteClicked();
          return true;
        case FragmentMenuItems.USE_AS_RINGTONE:
          MusicUtils.setRingtone(mActivity, getId());
          return true;
        case FragmentMenuItems.REMOVE_FROM_PLAYLIST:
          removeFromPlaylist();
          return true;
        case FragmentMenuItems.REMOVE_FROM_QUEUE:
          removeFromQueue();
          return true;
        case FragmentMenuItems.PLAY_NEXT:
          playNext();
          return true;
        case FragmentMenuItems.PLAY_ALBUM:
          playAlbum();
          return true;
        default:
          break;
      }
    }

    return false;
  }
Пример #5
0
 /** Called when the user clicks "play next". Has a default implementation */
 protected void playNext() {
   MusicUtils.playNext(getIdList(), getSourceId(), getSourceType());
 }
Пример #6
0
    @Override
    public void bindView(View view, Context context, Cursor cursor) {
      ViewHolder vh = (ViewHolder) view.getTag();

      cursor.copyStringToBuffer(mTitleIdx, vh.buffer1);
      vh.line1.setText(vh.buffer1.data, 0, vh.buffer1.sizeCopied);

      int secs = cursor.getInt(mDurationIdx) / 1000;
      if (secs == 0) {
        vh.duration.setText("");
      } else {
        vh.duration.setText(MusicUtils.makeTimeString(context, secs));
      }

      final StringBuilder builder = mBuilder;
      builder.delete(0, builder.length());

      String name = cursor.getString(mAlbumIdx);
      if (name == null || name.equals("<unknown>")) {
        builder.append(mUnknownAlbum);
      } else {
        builder.append(name);
      }
      builder.append('\n');
      name = cursor.getString(mArtistIdx);
      if (name == null || name.equals("<unknown>")) {
        builder.append(mUnknownArtist);
      } else {
        builder.append(name);
      }
      int len = builder.length();
      if (vh.buffer2.length < len) {
        vh.buffer2 = new char[len];
      }
      builder.getChars(0, len, vh.buffer2, 0);
      vh.line2.setText(vh.buffer2, 0, len);

      // Update the checkbox of the item, based on which the user last
      // selected.  Note that doing it this way means we must have the
      // list view update all of its items when the selected item
      // changes.
      final long id = cursor.getLong(mIdIdx);
      vh.radio.setChecked(id == mSelectedId);
      if (DBG)
        Log.v(
            TAG,
            "Binding id="
                + id
                + " sel="
                + mSelectedId
                + " playing="
                + mPlayingId
                + " cursor="
                + cursor);

      // Likewise, display the "now playing" icon if this item is
      // currently being previewed for the user.
      ImageView iv = vh.play_indicator;
      if (id == mPlayingId) {
        iv.setImageResource(R.drawable.indicator_ic_mp_playing_list);
        iv.setVisibility(View.VISIBLE);
      } else {
        iv.setVisibility(View.GONE);
      }
    }