First implementation of the progress bar activated via runnable

This commit is contained in:
antonio 2022-03-23 17:48:32 +01:00
parent 2dab1f7a79
commit 0be7f07b83
3 changed files with 31 additions and 3 deletions

1
.idea/misc.xml generated
View file

@ -3,6 +3,7 @@
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="../../../../layout/custom_preview.xml" value="0.4861111111111111" />
<entry key="../../.gradle/caches/transforms-3/20796fa5f04d2ad22571c8f80fdd27bd/transformed/jetified-exoplayer-ui-2.12.2/res/drawable-anydpi-v21/exo_ic_skip_previous.xml" value="0.5484375" />
<entry key="../../.gradle/caches/transforms-3/cfd4e4d299e24db95f3608b5f72af22b/transformed/jetified-exoplayer-ui-2.12.2/res/drawable-anydpi-v21/exo_ic_play_circle_filled.xml" value="0.28055555555555556" />
<entry key="app/src/main/res/drawable-anydpi/ic_api_notification.xml" value="0.44351851851851853" />

View file

@ -3,6 +3,7 @@ package com.cappielloantonio.play.ui.fragment;
import android.annotation.SuppressLint;
import android.content.ComponentName;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@ -14,7 +15,6 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.MediaMetadata;
import androidx.media3.common.Player;
import androidx.media3.common.util.RepeatModeUtil;
import androidx.media3.session.MediaBrowser;
import androidx.media3.session.MediaController;
import androidx.media3.session.SessionToken;
@ -41,7 +41,8 @@ public class PlayerBottomSheetFragment extends Fragment {
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
private ListenableFuture<MediaBrowser> mediaBrowserListenableFuture;
// TODO: Collegare la seekbar all'exo_progress
private Handler progressBarHandler;
private Runnable progressBarRunnable;
@Nullable
@Override
@ -110,6 +111,7 @@ public class PlayerBottomSheetFragment extends Fragment {
@SuppressLint("UnsafeOptInUsageError")
private void setMediaControllerListener(MediaBrowser mediaBrowser) {
defineProgressBarHandler(mediaBrowser);
setMediaControllerUI(mediaBrowser);
setMetadata(mediaBrowser.getMediaMetadata());
setContentDuration(mediaBrowser.getContentDuration());
@ -130,6 +132,11 @@ public class PlayerBottomSheetFragment extends Fragment {
setPlayingState(isPlaying);
}
@Override
public void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled) {
Player.Listener.super.onSkipSilenceEnabledChanged(skipSilenceEnabled);
}
@Override
public void onEvents(Player player, Player.Events events) {
setHeaderNextButtonState(mediaBrowser.hasNextMediaItem());
@ -177,8 +184,13 @@ public class PlayerBottomSheetFragment extends Fragment {
bind.playerHeaderLayout.playerHeaderSeekBar.setMax((int) (duration / 1000));
}
private void setProgress(MediaBrowser mediaBrowser) {
if (bind != null) bind.playerHeaderLayout.playerHeaderSeekBar.setProgress((int) (mediaBrowser.getCurrentPosition() / 1000), true);
}
private void setPlayingState(boolean isPlaying) {
bind.playerHeaderLayout.playerHeaderButton.setChecked(isPlaying);
runProgressBarHandler(isPlaying);
}
@SuppressLint("UnsafeOptInUsageError")
@ -222,4 +234,20 @@ public class PlayerBottomSheetFragment extends Fragment {
}
}
}
private void defineProgressBarHandler(MediaBrowser mediaBrowser) {
progressBarHandler = new Handler();
progressBarRunnable = () -> {
setProgress(mediaBrowser);
progressBarHandler.postDelayed(progressBarRunnable, 1000);
};
}
private void runProgressBarHandler(boolean isPlaying) {
if (isPlaying) {
progressBarHandler.postDelayed(progressBarRunnable, 1000);
} else {
progressBarHandler.removeCallbacks(progressBarRunnable);
}
}
}

View file

@ -90,7 +90,6 @@ public class PlayerControllerFragment extends Fragment {
bind = null;
}
@SuppressLint("UnsafeOptInUsageError")
private void init() {
playerMoveDownBottomSheet = bind.getRoot().findViewById(R.id.player_move_down_bottom_sheet);