diff --git a/app/src/main/kotlin/com/simplemobiletools/voicerecorder/fragments/PlayerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/voicerecorder/fragments/PlayerFragment.kt index b675908..0543a59 100644 --- a/app/src/main/kotlin/com/simplemobiletools/voicerecorder/fragments/PlayerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/voicerecorder/fragments/PlayerFragment.kt @@ -12,6 +12,7 @@ import android.os.PowerManager import android.provider.MediaStore import android.util.AttributeSet import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.voicerecorder.R import com.simplemobiletools.voicerecorder.activities.SimpleActivity import com.simplemobiletools.voicerecorder.adapters.RecordingsAdapter import com.simplemobiletools.voicerecorder.models.Recording @@ -52,6 +53,10 @@ class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPager } initMediaPlayer() + + play_pause_btn.setOnClickListener { + togglePlayPause() + } } @SuppressLint("InlinedApi") @@ -120,6 +125,11 @@ class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPager start() } + songStateChanged(true) + setupProgressTimer() + } + + private fun setupProgressTimer() { progressTimer.cancel() progressTimer = Timer() progressTimer.scheduleAtFixedRate(getProgressUpdateTask(), 1000, 1000) @@ -130,8 +140,8 @@ class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPager if (player != null) { Handler(Looper.getMainLooper()).post { val progress = player!!.currentPosition / 1000 + updateCurrentProgress(progress) player_progressbar.progress = progress - player_progress_current.text = progress.getFormattedDuration() } } } @@ -141,6 +151,31 @@ class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPager player_progress_current.text = seconds.getFormattedDuration() } + private fun togglePlayPause() { + if (getIsPlaying()) { + pauseSong() + } else { + resumeSong() + } + } + + private fun pauseSong() { + player?.pause() + songStateChanged(false) + } + + private fun resumeSong() { + player?.start() + songStateChanged(true) + } + + private fun songStateChanged(isPlaying: Boolean) { + val drawable = resources.getDrawable(if (isPlaying) R.drawable.ic_pause_vector else R.drawable.ic_play_vector) + play_pause_btn.setImageDrawable(drawable) + } + + private fun getIsPlaying() = player?.isPlaying == true + private fun setupColors() { recordings_fastscroller.updatePrimaryColor() recordings_fastscroller.updateBubbleColors() diff --git a/app/src/main/res/layout/fragment_player.xml b/app/src/main/res/layout/fragment_player.xml index 627830b..b358228 100644 --- a/app/src/main/res/layout/fragment_player.xml +++ b/app/src/main/res/layout/fragment_player.xml @@ -106,7 +106,7 @@ android:layout_width="@dimen/normal_icon_size" android:layout_height="@dimen/normal_icon_size" android:layout_weight="1" - android:background="?attr/selectableItemBackgroundBorderless" + android:background="?attr/selectableItemBackground" android:contentDescription="@string/previous" android:paddingTop="@dimen/small_margin" android:paddingBottom="@dimen/small_margin" @@ -117,7 +117,7 @@ android:layout_width="@dimen/normal_icon_size" android:layout_height="@dimen/normal_icon_size" android:layout_weight="1" - android:background="?attr/selectableItemBackgroundBorderless" + android:background="?attr/selectableItemBackground" android:contentDescription="@string/playpause" android:paddingTop="@dimen/small_margin" android:paddingBottom="@dimen/small_margin" @@ -128,7 +128,7 @@ android:layout_width="@dimen/normal_icon_size" android:layout_height="@dimen/normal_icon_size" android:layout_weight="1" - android:background="?attr/selectableItemBackgroundBorderless" + android:background="?attr/selectableItemBackground" android:contentDescription="@string/next" android:paddingTop="@dimen/small_margin" android:paddingBottom="@dimen/small_margin"