diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/TrackInfoDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/TrackInfoDialog.java index 62b9d1ec..f866c250 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/TrackInfoDialog.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/TrackInfoDialog.java @@ -15,6 +15,8 @@ import com.cappielloantonio.tempo.util.MusicUtil; import com.cappielloantonio.tempo.util.Preferences; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import java.util.Objects; + public class TrackInfoDialog extends DialogFragment { private DialogTrackInfoBinding bind; @@ -51,7 +53,12 @@ public class TrackInfoDialog extends DialogFragment { private void setTrackInfo() { bind.trakTitleInfoTextView.setText(mediaMetadata.title); - bind.trakArtistInfoTextView.setText(mediaMetadata.artist); + bind.trakArtistInfoTextView.setText( + mediaMetadata.artist != null + ? mediaMetadata.artist + : mediaMetadata.extras != null && Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) + ? mediaMetadata.extras.getString("uri", getString(R.string.label_placeholder)) + : ""); if (mediaMetadata.extras != null) { CustomGlideRequest.Builder diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java index b3755ee3..6841f247 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerBottomSheetFragment.java @@ -174,7 +174,12 @@ public class PlayerBottomSheetFragment extends Fragment { playerBottomSheetViewModel.setLiveDescription(mediaMetadata.extras.getString("description", null)); bind.playerHeaderLayout.playerHeaderMediaTitleLabel.setText(mediaMetadata.extras.getString("title")); - bind.playerHeaderLayout.playerHeaderMediaArtistLabel.setText(mediaMetadata.extras.getString("artist")); + bind.playerHeaderLayout.playerHeaderMediaArtistLabel.setText( + mediaMetadata.artist != null + ? mediaMetadata.artist + : Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) + ? mediaMetadata.extras.getString("uri", getString(R.string.label_placeholder)) + : ""); CustomGlideRequest.Builder .from(requireContext(), mediaMetadata.extras.getString("coverArtId"), CustomGlideRequest.ResourceType.Song) @@ -182,7 +187,11 @@ public class PlayerBottomSheetFragment extends Fragment { .into(bind.playerHeaderLayout.playerHeaderMediaCoverImage); bind.playerHeaderLayout.playerHeaderMediaTitleLabel.setVisibility(mediaMetadata.extras.getString("title") != null && !Objects.equals(mediaMetadata.extras.getString("title"), "") ? View.VISIBLE : View.GONE); - bind.playerHeaderLayout.playerHeaderMediaArtistLabel.setVisibility(mediaMetadata.extras.getString("artist") != null && !Objects.equals(mediaMetadata.extras.getString("artist"), "") ? View.VISIBLE : View.GONE); + bind.playerHeaderLayout.playerHeaderMediaArtistLabel.setVisibility( + (mediaMetadata.extras.getString("artist") != null && !Objects.equals(mediaMetadata.extras.getString("artist"), "")) + || (Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) && mediaMetadata.extras.getString("uri") != null) + ? View.VISIBLE + : View.GONE); } } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java index 37cd9f10..d5298253 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerControllerFragment.java @@ -146,7 +146,6 @@ public class PlayerControllerFragment extends Fragment { bind.nowPlayingMediaControllerView.setPlayer(mediaBrowser); mediaBrowser.setShuffleModeEnabled(Preferences.isShuffleModeEnabled()); mediaBrowser.setRepeatMode(Preferences.getRepeatMode()); - setMediaControllerListener(mediaBrowser); } catch (Exception e) { e.printStackTrace(); @@ -181,13 +180,22 @@ public class PlayerControllerFragment extends Fragment { private void setMetadata(MediaMetadata mediaMetadata) { playerMediaTitleLabel.setText(String.valueOf(mediaMetadata.title)); - playerArtistNameLabel.setText(String.valueOf(mediaMetadata.artist)); + playerArtistNameLabel.setText( + mediaMetadata.artist != null + ? String.valueOf(mediaMetadata.artist) + : mediaMetadata.extras != null && Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) + ? mediaMetadata.extras.getString("uri", getString(R.string.label_placeholder)) + : ""); playerMediaTitleLabel.setSelected(true); playerArtistNameLabel.setSelected(true); playerMediaTitleLabel.setVisibility(mediaMetadata.title != null && !Objects.equals(mediaMetadata.title, "") ? View.VISIBLE : View.GONE); - playerArtistNameLabel.setVisibility(mediaMetadata.artist != null && !Objects.equals(mediaMetadata.artist, "") ? View.VISIBLE : View.GONE); + playerArtistNameLabel.setVisibility( + (mediaMetadata.artist != null && !Objects.equals(mediaMetadata.artist, "")) + || mediaMetadata.extras != null && Objects.equals(mediaMetadata.extras.getString("type"), Constants.MEDIA_TYPE_RADIO) && mediaMetadata.extras.getString("uri") != null + ? View.VISIBLE + : View.GONE); } private void setMediaInfo(MediaMetadata mediaMetadata) { diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/MappingUtil.java b/app/src/main/java/com/cappielloantonio/tempo/util/MappingUtil.java index 1b88774d..f8f15f07 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/util/MappingUtil.java +++ b/app/src/main/java/com/cappielloantonio/tempo/util/MappingUtil.java @@ -140,7 +140,6 @@ public class MappingUtil { Bundle bundle = new Bundle(); bundle.putString("id", internetRadioStation.getId()); bundle.putString("title", internetRadioStation.getName()); - bundle.putString("artist", uri.toString()); bundle.putString("uri", uri.toString()); bundle.putString("type", Constants.MEDIA_TYPE_RADIO); @@ -149,7 +148,6 @@ public class MappingUtil { .setMediaMetadata( new MediaMetadata.Builder() .setTitle(internetRadioStation.getName()) - .setArtist(internetRadioStation.getStreamUrl()) .setExtras(bundle) .setIsBrowsable(false) .setIsPlayable(true) diff --git a/app/src/notquitemy/java/com/cappielloantonio/tempo/service/MediaService.kt b/app/src/notquitemy/java/com/cappielloantonio/tempo/service/MediaService.kt index b8a7179b..92c4b9b3 100644 --- a/app/src/notquitemy/java/com/cappielloantonio/tempo/service/MediaService.kt +++ b/app/src/notquitemy/java/com/cappielloantonio/tempo/service/MediaService.kt @@ -138,10 +138,19 @@ class MediaService : MediaLibraryService() { controller: ControllerInfo, mediaItems: List ): ListenableFuture> { - val updatedMediaItems = mediaItems.map { - it.buildUpon() - .setUri(it.requestMetadata.mediaUri) - .setMediaMetadata(it.mediaMetadata) + val updatedMediaItems = mediaItems.map { mediaItem -> + val mediaMetadata = mediaItem.mediaMetadata + + val newMetadata = mediaMetadata.buildUpon() + .setArtist( + if (mediaMetadata.artist != null) mediaMetadata.artist + else mediaMetadata.extras?.getString("uri") ?: "" + ) + .build() + + mediaItem.buildUpon() + .setUri(mediaItem.requestMetadata.mediaUri) + .setMediaMetadata(newMetadata) .setMimeType(MimeTypes.BASE_TYPE_AUDIO) .build() }