From: Mobaswirul Islam/NC eXperience Group /SRBD/Engineer/Samsung Electronics Date: Tue, 9 Jul 2024 08:44:54 +0000 (+0600) Subject: Fixed Unresponsive Playback Slider Issue X-Git-Tag: accepted/tizen/unified/20240715.155407~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0b032279e9531a8a4ac90e1835042d9bd776e95e;p=profile%2Fiot%2Fapps%2Fdotnet%2Fmusic-player.git Fixed Unresponsive Playback Slider Issue [Problem] [TNINE-3739] Progress Bar interaction did not change in Music Player [Cause & Measure] Cause : MediaInfo/AudioInfo doesn't have tracklength information. Measure : Used player.StreamInfo.GetDuration() to geth tracklength. Change-Id: Ieebe0e539577adf70df42d4d10f0e36f5cd1814b Signed-off-by: Mobaswirul Islam/NC eXperience Group /SRBD/Engineer/Samsung Electronics --- diff --git a/music-player/Core/MusicPlayer.cs b/music-player/Core/MusicPlayer.cs index 0237cb3..7d4c5a4 100755 --- a/music-player/Core/MusicPlayer.cs +++ b/music-player/Core/MusicPlayer.cs @@ -106,6 +106,18 @@ namespace MusicPlayer.Core } } + public int GetTrackDuration() + { + if (player != null) + { + if (player.StreamInfo != null) + { + return player.StreamInfo.GetDuration(); + } + } + return 0; + } + public void Stop() { if(ValidatePlayerState(PlayerValidationState.Stop)) diff --git a/music-player/Core/PlayerController.cs b/music-player/Core/PlayerController.cs index 4cd4a80..7cec9ad 100755 --- a/music-player/Core/PlayerController.cs +++ b/music-player/Core/PlayerController.cs @@ -69,6 +69,15 @@ namespace MusicPlayer.Core musicPlayer.Pause(); } + public int GetTrackDuration() + { + if (musicPlayer == null) + { + return 0; + } + return musicPlayer.GetTrackDuration(); + } + public void Resume() { if (musicPlayer.State == PlayerState.Paused) diff --git a/music-player/ViewModels/PlayerViewModel.cs b/music-player/ViewModels/PlayerViewModel.cs index dbc44c8..6ad737c 100755 --- a/music-player/ViewModels/PlayerViewModel.cs +++ b/music-player/ViewModels/PlayerViewModel.cs @@ -254,7 +254,7 @@ namespace MusicPlayer.ViewModels public void SetElapsedTime(float value) { - int currentPosition = (int)(playerModel.CurrentTrack.DurationInMS * value); + int currentPosition = (int)(GetTrackDuration() * value); playerModel.PlayingTime = TimeSpan.FromMilliseconds(currentPosition).ToString(AppConstants.TimeFormat); } @@ -402,8 +402,14 @@ namespace MusicPlayer.ViewModels private void UpdatePlayingTime() { int position = PlayerController.Instance.GetPosition(); - playerModel.ElapsedTime = position / (float)playerModel.CurrentTrack.DurationInMS; + int duration = GetTrackDuration(); + + if (duration <= 0) return; + + float elapsedTime = 1.0f * position / duration; + playerModel.ElapsedTime = Math.Min(1.0f, Math.Max(0.0f, elapsedTime)); playerModel.PlayingTime = TimeSpan.FromMilliseconds(position).ToString(AppConstants.TimeFormat); + playerModel.TrackLength = TimeSpan.FromMilliseconds(duration).ToString(AppConstants.TimeFormat); } private void StartPlayback() @@ -428,6 +434,19 @@ namespace MusicPlayer.ViewModels { PlayerController.Instance.Pause(); } + + private int GetTrackDuration() + { + int duration = playerModel.CurrentTrack.DurationInMS; + if (playerModel.CurrentTrack.DurationInMS <= 0) + { + duration = PlayerController.Instance.GetTrackDuration(); + playerModel.CurrentTrack.DurationInMS = duration; + playerModel.CurrentTrack.Duration = TimeSpan.FromMilliseconds(duration).ToString(AppConstants.TimeFormat); + } + return duration; + } + private void Resume() { PlayerController.Instance.Resume(); diff --git a/packaging/org.tizen.MusicPlayer-1.0.0.tpk b/packaging/org.tizen.MusicPlayer-1.0.0.tpk index b7047f6..7a89623 100755 Binary files a/packaging/org.tizen.MusicPlayer-1.0.0.tpk and b/packaging/org.tizen.MusicPlayer-1.0.0.tpk differ