Implemented functionality to repeat the track #23

This commit is contained in:
amazing-username
2019-03-10 10:28:17 -04:00
committed by amazing-username
parent 040544e630
commit 3d7c293555
6 changed files with 37 additions and 9 deletions
-1
View File
@@ -135,7 +135,6 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
@@ -38,7 +38,8 @@ import kotlinx.coroutines.runBlocking
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
private var musicService: MusicService? = null private var musicService: MusicService? = null
private var serviceBinded: Boolean? = null private var serviceBinded: Boolean? = false
private var repeatOn: Boolean? = false
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@@ -100,6 +101,9 @@ class MainActivity : AppCompatActivity() {
ShuffleTracks.setOnClickListener { ShuffleTracks.setOnClickListener {
toggleShuffle() toggleShuffle()
} }
RepeatTrack.setOnClickListener {
toggleRepeat()
}
SettingsLink.setOnClickListener { SettingsLink.setOnClickListener {
val intent = Intent(this, SettingsActivity::class.java) val intent = Intent(this, SettingsActivity::class.java)
try { try {
@@ -134,6 +138,25 @@ class MainActivity : AppCompatActivity() {
} }
} }
} }
private fun toggleRepeat() {
val repeatText = RepeatTrack.text.toString()
val on = resources.getString(R.string.repeat_on)
val off = resources.getString(R.string.repeat_off)
when (repeatText) {
on -> {
repeatOn = false
RepeatTrack.text = off
}
off -> {
repeatOn = true
RepeatTrack.text = on
}
else -> {
repeatOn = false
RepeatTrack.text = off
}
}
}
private fun playSongTrack() { private fun playSongTrack() {
PlayTrack.isEnabled = false PlayTrack.isEnabled = false
@@ -153,7 +176,7 @@ class MainActivity : AppCompatActivity() {
private fun playNextSongTrack() { private fun playNextSongTrack() {
NextTrack.isEnabled = false NextTrack.isEnabled = false
try { try {
val controls = PlayControls(shuffleOn!!) val controls = PlayControls(shuffleOn!!, repeatOn!!)
musicService!!.playNextTrack(controls) musicService!!.playNextTrack(controls)
configureTrackDisplay() configureTrackDisplay()
@@ -167,7 +190,7 @@ class MainActivity : AppCompatActivity() {
private fun playPreviousSongTrack() { private fun playPreviousSongTrack() {
PreviousTrack.isEnabled = false PreviousTrack.isEnabled = false
try { try {
val controls = PlayControls(shuffleOn!!) val controls = PlayControls(shuffleOn!!, repeatOn!!)
musicService!!.playPreviousTrack(controls) musicService!!.playPreviousTrack(controls)
configureTrackDisplay() configureTrackDisplay()
@@ -335,5 +358,4 @@ class MainActivity : AppCompatActivity() {
private var musicHandler: Handler? = Handler() private var musicHandler: Handler? = Handler()
private var shuffleOn: Boolean? = false private var shuffleOn: Boolean? = false
} }
@@ -1,4 +1,4 @@
package com.example.mear.models package com.example.mear.models
data class PlayControls(val shuffleOn: Boolean) { data class PlayControls(val shuffleOn: Boolean, val repeatOn: Boolean) {
} }
@@ -24,6 +24,7 @@ class MusicService: Service() {
private var trackPlayer: MediaPlayer? = null private var trackPlayer: MediaPlayer? = null
private var currentSongIndex: Int? = null private var currentSongIndex: Int? = null
private var shuffleOn: Boolean? = false private var shuffleOn: Boolean? = false
private var repeatOn: Boolean? = false
private val mBinder = LocalBinder() private val mBinder = LocalBinder()
private val seconds = 4 private val seconds = 4
@@ -131,6 +132,7 @@ class MusicService: Service() {
} }
fun configureControl(controls: PlayControls) { fun configureControl(controls: PlayControls) {
shuffleOn = controls.shuffleOn shuffleOn = controls.shuffleOn
repeatOn = controls.repeatOn
} }
fun playNextTrack(controls: PlayControls) { fun playNextTrack(controls: PlayControls) {
try { try {
@@ -159,6 +161,9 @@ class MusicService: Service() {
private fun fetchSongIndex(playType: PlayTypes): Int { private fun fetchSongIndex(playType: PlayTypes): Int {
var songIndex: Int? = currentSongIndex var songIndex: Int? = currentSongIndex
if (repeatOn!!) {
return songIndex!!
}
val songCount = retrieveSongCount() val songCount = retrieveSongCount()
try { try {
@@ -259,9 +264,9 @@ class MusicService: Service() {
private fun retrieveSongCount(): Int? { private fun retrieveSongCount(): Int? {
try { try {
var db = DatabaseManager(this) //var db = DatabaseManager(this)
var trackDb = TrackRepository(this) var trackDb = TrackRepository(this)
val count = trackDb.getSongCount() val count = TrackRepository(this).getSongCount()
return count return count
} }
@@ -24,7 +24,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="4dp" android:layout_marginEnd="4dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:text="ROff" android:text="@string/repeat_off"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
+2
View File
@@ -10,6 +10,8 @@
<string name="shuffle_on">SOn</string> <string name="shuffle_on">SOn</string>
<string name="shuffle_off">SOff</string> <string name="shuffle_off">SOff</string>
<string name="repeat_on">ROn</string>
<string name="repeat_off">ROff</string>
<string name="title_activity_settings">Settings</string> <string name="title_activity_settings">Settings</string>
<string name="track_start">0:00</string> <string name="track_start">0:00</string>