diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java
index aa7ac452..f64ee893 100644
--- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java
+++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java
@@ -23,6 +23,7 @@ import com.cappielloantonio.play.helper.MusicProgressViewUpdateHelper;
import com.cappielloantonio.play.interfaces.MusicServiceEventListener;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.ui.activities.MainActivity;
+import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
public class PlayerBottomSheetFragment extends Fragment implements MusicServiceEventListener, MusicProgressViewUpdateHelper.Callback {
@@ -56,6 +57,7 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
initQueueSlideView();
initQueueRecyclerView();
initFavoriteButtonClick();
+ initToggleButtonSongState();
return view;
}
@@ -121,6 +123,16 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
bind.playerBodyLayout.buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite());
}
+ private void initToggleButtonSongState() {
+ bind.playerHeaderLayout.playerHeaderButton.setOnClickListener(v -> {
+ if (MusicPlayerRemote.isPlaying()) {
+ MusicPlayerRemote.pauseSong();
+ } else {
+ MusicPlayerRemote.resumePlaying();
+ }
+ });
+ }
+
private void initSeekBar() {
bind.playerBodyLayout.playerBigSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
@@ -155,6 +167,14 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
bind.playerBodyLayout.buttonFavorite.setChecked(song.isFavorite());
}
+ protected void updatePlayPauseState() {
+ if (MusicPlayerRemote.isPlaying()) {
+ bind.playerHeaderLayout.playerHeaderButton.setChecked(false);
+ } else {
+ bind.playerHeaderLayout.playerHeaderButton.setChecked(true);
+ }
+ }
+
private void setUpMusicControllers() {
// setUpPrevNext();
// setUpRepeatButton();
@@ -177,7 +197,7 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
@Override
public void onServiceConnected() {
-
+ updatePlayPauseState();
}
@Override
@@ -197,7 +217,7 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
@Override
public void onPlayStateChanged() {
-
+ updatePlayPauseState();
}
@Override
@@ -209,5 +229,8 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
public void onUpdateProgressViews(int progress, int total) {
bind.playerBodyLayout.playerBigSeekBar.setMax(total);
bind.playerBodyLayout.playerBigSeekBar.setProgress(progress);
+
+ bind.playerBodyLayout.playerBigSongTimeIn.setText(MusicUtil.getReadableDurationString(progress));
+ bind.playerBodyLayout.playerBigSongDuration.setText(MusicUtil.getReadableDurationString(total));
}
}
diff --git a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java
index ad8a6701..2ba46eca 100644
--- a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java
+++ b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java
@@ -8,6 +8,8 @@ import com.cappielloantonio.play.model.Song;
import org.jellyfin.apiclient.interaction.ApiClient;
+import java.util.Locale;
+
public class MusicUtil {
public static String getSongFileUri(Song song) {
ApiClient apiClient = App.getApiClientInstance(App.getInstance());
@@ -51,4 +53,17 @@ public class MusicUtil {
Log.i(MusicUtil.class.getName(), "playing audio: " + builder);
return builder.toString();
}
+
+ public static String getReadableDurationString(long songDurationMillis) {
+ long minutes = (songDurationMillis / 1000) / 60;
+ long seconds = (songDurationMillis / 1000) % 60;
+
+ if (minutes < 60) {
+ return String.format(Locale.getDefault(), "%01d:%02d", minutes, seconds);
+ } else {
+ long hours = minutes / 60;
+ minutes = minutes % 60;
+ return String.format(Locale.getDefault(), "%d:%02d:%02d", hours, minutes, seconds);
+ }
+ }
}
diff --git a/app/src/main/res/layout/player_body_bottom_sheet.xml b/app/src/main/res/layout/player_body_bottom_sheet.xml
index 880f039d..6ee8ddc9 100644
--- a/app/src/main/res/layout/player_body_bottom_sheet.xml
+++ b/app/src/main/res/layout/player_body_bottom_sheet.xml
@@ -32,24 +32,58 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/collapse_bottom_sheet_button" />
-
+ app:layout_constraintTop_toBottomOf="@+id/player_song_cover_view_pager">
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/player_header_bottom_sheet.xml b/app/src/main/res/layout/player_header_bottom_sheet.xml
index 885250ee..12abc3a4 100644
--- a/app/src/main/res/layout/player_header_bottom_sheet.xml
+++ b/app/src/main/res/layout/player_header_bottom_sheet.xml
@@ -7,12 +7,16 @@
android:elevation="2dp"
android:background="@color/almostCardColor">
-