mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 01:53:31 +00:00
First implementation of the progress bar activated via runnable
This commit is contained in:
parent
2dab1f7a79
commit
0be7f07b83
3 changed files with 31 additions and 3 deletions
1
.idea/misc.xml
generated
1
.idea/misc.xml
generated
|
|
@ -3,6 +3,7 @@
|
||||||
<component name="DesignSurface">
|
<component name="DesignSurface">
|
||||||
<option name="filePathToZoomLevelMap">
|
<option name="filePathToZoomLevelMap">
|
||||||
<map>
|
<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/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="../../.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" />
|
<entry key="app/src/main/res/drawable-anydpi/ic_api_notification.xml" value="0.44351851851851853" />
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.cappielloantonio.play.ui.fragment;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
@ -14,7 +15,6 @@ import androidx.fragment.app.Fragment;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.media3.common.MediaMetadata;
|
import androidx.media3.common.MediaMetadata;
|
||||||
import androidx.media3.common.Player;
|
import androidx.media3.common.Player;
|
||||||
import androidx.media3.common.util.RepeatModeUtil;
|
|
||||||
import androidx.media3.session.MediaBrowser;
|
import androidx.media3.session.MediaBrowser;
|
||||||
import androidx.media3.session.MediaController;
|
import androidx.media3.session.MediaController;
|
||||||
import androidx.media3.session.SessionToken;
|
import androidx.media3.session.SessionToken;
|
||||||
|
|
@ -41,7 +41,8 @@ public class PlayerBottomSheetFragment extends Fragment {
|
||||||
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
|
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
|
||||||
private ListenableFuture<MediaBrowser> mediaBrowserListenableFuture;
|
private ListenableFuture<MediaBrowser> mediaBrowserListenableFuture;
|
||||||
|
|
||||||
// TODO: Collegare la seekbar all'exo_progress
|
private Handler progressBarHandler;
|
||||||
|
private Runnable progressBarRunnable;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -110,6 +111,7 @@ public class PlayerBottomSheetFragment extends Fragment {
|
||||||
|
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
private void setMediaControllerListener(MediaBrowser mediaBrowser) {
|
private void setMediaControllerListener(MediaBrowser mediaBrowser) {
|
||||||
|
defineProgressBarHandler(mediaBrowser);
|
||||||
setMediaControllerUI(mediaBrowser);
|
setMediaControllerUI(mediaBrowser);
|
||||||
setMetadata(mediaBrowser.getMediaMetadata());
|
setMetadata(mediaBrowser.getMediaMetadata());
|
||||||
setContentDuration(mediaBrowser.getContentDuration());
|
setContentDuration(mediaBrowser.getContentDuration());
|
||||||
|
|
@ -130,6 +132,11 @@ public class PlayerBottomSheetFragment extends Fragment {
|
||||||
setPlayingState(isPlaying);
|
setPlayingState(isPlaying);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled) {
|
||||||
|
Player.Listener.super.onSkipSilenceEnabledChanged(skipSilenceEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEvents(Player player, Player.Events events) {
|
public void onEvents(Player player, Player.Events events) {
|
||||||
setHeaderNextButtonState(mediaBrowser.hasNextMediaItem());
|
setHeaderNextButtonState(mediaBrowser.hasNextMediaItem());
|
||||||
|
|
@ -177,8 +184,13 @@ public class PlayerBottomSheetFragment extends Fragment {
|
||||||
bind.playerHeaderLayout.playerHeaderSeekBar.setMax((int) (duration / 1000));
|
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) {
|
private void setPlayingState(boolean isPlaying) {
|
||||||
bind.playerHeaderLayout.playerHeaderButton.setChecked(isPlaying);
|
bind.playerHeaderLayout.playerHeaderButton.setChecked(isPlaying);
|
||||||
|
runProgressBarHandler(isPlaying);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
@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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,6 @@ public class PlayerControllerFragment extends Fragment {
|
||||||
bind = null;
|
bind = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
private void init() {
|
private void init() {
|
||||||
playerMoveDownBottomSheet = bind.getRoot().findViewById(R.id.player_move_down_bottom_sheet);
|
playerMoveDownBottomSheet = bind.getRoot().findViewById(R.id.player_move_down_bottom_sheet);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue