From cbacb417ab9a5b322b836ce54a7652f0a3702d55 Mon Sep 17 00:00:00 2001 From: antonio Date: Fri, 25 Mar 2022 22:31:55 +0100 Subject: [PATCH] Show the information of the media being played inside the player --- .idea/misc.xml | 4 +- .../ui/fragment/PlayerControllerFragment.java | 55 +++++++++++-- app/src/main/res/drawable/ic_transcode.xml | 9 ++ ...nner_fragment_player_controller_layout.xml | 82 +++++++++++-------- 4 files changed, 110 insertions(+), 40 deletions(-) create mode 100644 app/src/main/res/drawable/ic_transcode.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index d751460c..aedaa4a1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -54,6 +54,7 @@ + @@ -80,6 +81,7 @@ + @@ -122,7 +124,7 @@ - + diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerControllerFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerControllerFragment.java index b3a7d147..5fce1da8 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerControllerFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerControllerFragment.java @@ -34,6 +34,7 @@ import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerHorizontalPag import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.PreferenceUtil; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; +import com.google.android.material.chip.Chip; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; @@ -41,13 +42,17 @@ public class PlayerControllerFragment extends Fragment { private static final String TAG = "PlayerCoverFragment"; private InnerFragmentPlayerControllerBinding bind; - private ImageView playerMoveDownBottomSheet; private ViewPager2 playerMediaCoverViewPager; private ToggleButton buttonFavorite; private TextView playerMediaTitleLabel; private TextView playerArtistNameLabel; private Button playbackSpeedButton; private ToggleButton skipSilenceToggleButton; + private Chip playerMediaExtension; + private TextView playerMediaBitrate; + private ImageView playerMediaTranscodingIcon; + private Chip playerMediaTranscodedExtension; + private TextView playerMediaTranscodedBitrate; private MainActivity activity; private PlayerBottomSheetViewModel playerBottomSheetViewModel; @@ -67,7 +72,6 @@ public class PlayerControllerFragment extends Fragment { initMediaListenable(); initArtistLabelButton(); - return view; } @@ -92,15 +96,17 @@ public class PlayerControllerFragment extends Fragment { @SuppressLint("UnsafeOptInUsageError") private void init() { - playerMoveDownBottomSheet = bind.getRoot().findViewById(R.id.player_move_down_bottom_sheet); playerMediaCoverViewPager = bind.getRoot().findViewById(R.id.player_media_cover_view_pager); buttonFavorite = bind.getRoot().findViewById(R.id.button_favorite); playerMediaTitleLabel = bind.getRoot().findViewById(R.id.player_media_title_label); playerArtistNameLabel = bind.getRoot().findViewById(R.id.player_artist_name_label); playbackSpeedButton = bind.getRoot().findViewById(R.id.player_playback_speed_button); skipSilenceToggleButton = bind.getRoot().findViewById(R.id.player_skip_silence_toggle_button); - - playerMoveDownBottomSheet.setOnClickListener(view -> activity.collapseBottomSheet()); + playerMediaExtension = bind.getRoot().findViewById(R.id.player_media_extension); + playerMediaBitrate = bind.getRoot().findViewById(R.id.player_media_bitrate); + playerMediaTranscodingIcon = bind.getRoot().findViewById(R.id.player_media_transcoding_audio); + playerMediaTranscodedExtension = bind.getRoot().findViewById(R.id.player_media_transcoded_extension); + playerMediaTranscodedBitrate = bind.getRoot().findViewById(R.id.player_media_transcoded_bitrate); } @SuppressLint("UnsafeOptInUsageError") @@ -131,12 +137,14 @@ public class PlayerControllerFragment extends Fragment { private void setMediaControllerListener(MediaBrowser mediaBrowser) { setMediaControllerUI(mediaBrowser); setMetadata(mediaBrowser.getMediaMetadata()); + setMediaInfo(mediaBrowser.getMediaMetadata()); mediaBrowser.addListener(new Player.Listener() { @Override public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) { setMediaControllerUI(mediaBrowser); setMetadata(mediaMetadata); + setMediaInfo(mediaMetadata); } }); } @@ -150,6 +158,41 @@ public class PlayerControllerFragment extends Fragment { playerArtistNameLabel.setSelected(true); } + private void setMediaInfo(MediaMetadata mediaMetadata) { + if(mediaMetadata.extras != null) { + String extension = mediaMetadata.extras.getString("extension", "Unknown format"); + String bitrate = mediaMetadata.extras.getInt("bitrate", 0) != 0 ? mediaMetadata.extras.getInt("bitrate", 0) + "kbps" : "Original"; + + playerMediaExtension.setText(extension); + + if(bitrate.equals("Original")) { + playerMediaBitrate.setVisibility(View.GONE); + } else { + playerMediaBitrate.setVisibility(View.VISIBLE); + + playerMediaBitrate.setText(bitrate); + + } + } + + String transcodingExtension = MusicUtil.getTranscodingFormatPreference(requireContext()); + String transcodingBitrate = Integer.parseInt(MusicUtil.getBitratePreference(requireContext())) != 0 ? Integer.parseInt(MusicUtil.getBitratePreference(requireContext())) + "kbps" : "Original"; + + if(transcodingExtension.equals("raw") && transcodingBitrate.equals("Original")) { + playerMediaTranscodingIcon.setVisibility(View.GONE); + playerMediaTranscodedBitrate.setVisibility(View.GONE); + playerMediaTranscodedExtension.setVisibility(View.GONE); + } else { + playerMediaTranscodingIcon.setVisibility(View.VISIBLE); + playerMediaTranscodedBitrate.setVisibility(View.VISIBLE); + playerMediaTranscodedExtension.setVisibility(View.VISIBLE); + + playerMediaTranscodedExtension.setText(transcodingExtension); + playerMediaTranscodedBitrate.setText(transcodingBitrate); + } + + } + @SuppressLint("UnsafeOptInUsageError") private void setMediaControllerUI(MediaBrowser mediaBrowser) { initPlaybackSpeedButton(mediaBrowser); @@ -205,9 +248,7 @@ public class PlayerControllerFragment extends Fragment { playerBottomSheetViewModel.getLiveMedia().observe(requireActivity(), media -> { if (media != null) { buttonFavorite.setChecked(media.isStarred()); - buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext(), media)); - buttonFavorite.setOnLongClickListener(v -> { Bundle bundle = new Bundle(); bundle.putParcelable("song_object", media); diff --git a/app/src/main/res/drawable/ic_transcode.xml b/app/src/main/res/drawable/ic_transcode.xml new file mode 100644 index 00000000..805d8096 --- /dev/null +++ b/app/src/main/res/drawable/ic_transcode.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/inner_fragment_player_controller_layout.xml b/app/src/main/res/layout/inner_fragment_player_controller_layout.xml index 8bebdfd8..1ca37ba7 100644 --- a/app/src/main/res/layout/inner_fragment_player_controller_layout.xml +++ b/app/src/main/res/layout/inner_fragment_player_controller_layout.xml @@ -5,52 +5,70 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - + - + - + - - - - + + + + + app:layout_constraintTop_toBottomOf="@+id/player_media_quality_sector" />