diff --git a/.idea/other.xml b/.idea/other.xml
index 0d3a1fb..4604c44 100644
--- a/.idea/other.xml
+++ b/.idea/other.xml
@@ -179,17 +179,6 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/java/com/woka/home/views/FMActivity.kt b/app/src/main/java/com/woka/home/views/FMActivity.kt
index 0fe4e92..96d0507 100644
--- a/app/src/main/java/com/woka/home/views/FMActivity.kt
+++ b/app/src/main/java/com/woka/home/views/FMActivity.kt
@@ -2,24 +2,34 @@ package com.woka.home.views
import android.annotation.SuppressLint
import android.graphics.Color
-import android.os.Build
import android.os.Bundle
-import android.webkit.WebSettings
-import android.webkit.WebViewClient
+import android.util.Log
import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
+import androidx.media3.common.MediaItem
+import androidx.media3.common.Player
+import androidx.media3.exoplayer.ExoPlayer
import com.woka.R
import com.woka.databinding.ActivityFmactivityBinding
+import com.woka.utils.TAG
import com.woka.utils.WokaBaseActivity
+import com.woka.utils.hide
+import com.woka.utils.show
+import com.woka.utils.toast
+import kotlin.math.max
+import kotlin.math.min
+import kotlin.math.round
class FMActivity : WokaBaseActivity() {
- companion object{
- private const val FM_URL = "https://wokastaging.in/api/woka_fm"
+ companion object {
+ private const val FM_URL = "https://stream.rcast.net/71643"
+ private const val VOLUME_STEP = 0.2f
}
private lateinit var binding: ActivityFmactivityBinding
+ private lateinit var player: ExoPlayer
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
@@ -35,7 +45,29 @@ class FMActivity : WokaBaseActivity() {
window.navigationBarColor = Color.BLACK
+ player = ExoPlayer.Builder(this).build()
+
+ initPlayer()
+
clickEvents()
+
+ setObservers()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ player.stop()
+ player.release()
+ }
+
+ private fun initPlayer() {
+ binding.playBtn.hide()
+ binding.progressBar.show()
+
+ player.setMediaItem(MediaItem.fromUri(FM_URL))
+ player.playWhenReady = true
+ player.volume = 0.6f
+ player.prepare()
}
private fun clickEvents() {
@@ -43,7 +75,71 @@ class FMActivity : WokaBaseActivity() {
root.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
+
+ fmView.setOnClickListener {}
+
+ playBtn.setOnClickListener {
+ if (player.isPlaying) player.pause()
+ else player.play()
+ }
+
+ volumeDown.setOnClickListener {
+ if (player.volume == 0.0f){
+ return@setOnClickListener
+ }
+
+ player.volume = max(0.0f, player.volume - VOLUME_STEP)
+
+ updateVolumeButtons()
+ }
+
+ volumeUp.setOnClickListener {
+ if (player.volume == 1.0f){
+ return@setOnClickListener
+ }
+
+ player.volume = min(1.0f, player.volume + VOLUME_STEP)
+
+ updateVolumeButtons()
+ }
}
}
+ private fun setObservers() {
+ player.addListener(object : Player.Listener {
+ override fun onIsPlayingChanged(isPlaying: Boolean) {
+ super.onIsPlayingChanged(isPlaying)
+ binding.playBtn.show()
+
+ binding.playBtn.setImageResource(
+ if (isPlaying) {
+ R.drawable.ic_pause_filled
+ } else {
+ R.drawable.ic_play_filled_2
+ }
+ )
+ }
+ })
+ }
+
+ private fun updateVolumeButtons(){
+ val volume = (Math.round(player.volume * 10) / 10.0).toFloat()
+ Log.d(TAG, "updateVolumeButtons: $volume")
+ binding.apply {
+ when {
+ volume <= 0.0f -> {
+ volumeDown.alpha = 0.5f
+ volumeUp.alpha = 1f
+ }
+ volume >= 1f -> {
+ volumeUp.alpha = 0.5f
+ volumeDown.alpha = 1f
+ }
+ else -> {
+ volumeUp.alpha = 1f
+ volumeDown.alpha = 1f
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gradient_fm_play.xml b/app/src/main/res/drawable/gradient_fm_play.xml
new file mode 100644
index 0000000..d0ab9a8
--- /dev/null
+++ b/app/src/main/res/drawable/gradient_fm_play.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_pause_filled.xml b/app/src/main/res/drawable/ic_pause_filled.xml
new file mode 100644
index 0000000..74a792b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause_filled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_play_filled_2.xml b/app/src/main/res/drawable/ic_play_filled_2.xml
new file mode 100644
index 0000000..8ddfec8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_play_filled_2.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_fmactivity.xml b/app/src/main/res/layout/activity_fmactivity.xml
index 3ec1a0f..622a6fe 100644
--- a/app/src/main/res/layout/activity_fmactivity.xml
+++ b/app/src/main/res/layout/activity_fmactivity.xml
@@ -24,12 +24,12 @@
+ android:background="@drawable/img_fm_bg">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+