Sfoglia il codice sorgente

disabled latency compensator in RadioService

yattoz 4 anni fa
parent
commit
669e1cdc70

+ 1 - 1
app/src/main/java/fr/forum_thalie/tsumugi/RadioService.kt Vedi File

140
                     PlayerStore.instance.isStreamDown = true
140
                     PlayerStore.instance.isStreamDown = true
141
                 }
141
                 }
142
                 else -> {
142
                 else -> {
143
-                    PlayerStore.instance.fetchApi(numberOfSongs >= 2)
143
+                    PlayerStore.instance.fetchApi(/* numberOfSongs >= 2 */)
144
                 }
144
                 }
145
             }
145
             }
146
         }
146
         }

+ 8 - 5
app/src/main/java/fr/forum_thalie/tsumugi/playerstore/PlayerStore.kt Vedi File

7
 import android.util.Log
7
 import android.util.Log
8
 import androidx.lifecycle.MutableLiveData
8
 import androidx.lifecycle.MutableLiveData
9
 import fr.forum_thalie.tsumugi.*
9
 import fr.forum_thalie.tsumugi.*
10
+import fr.forum_thalie.tsumugi.planning.Planning
10
 import org.json.JSONObject
11
 import org.json.JSONObject
11
 import java.net.URL
12
 import java.net.URL
12
 import java.text.ParseException
13
 import java.text.ParseException
58
 
59
 
59
     private fun getTimestamp(s: String) : Long
60
     private fun getTimestamp(s: String) : Long
60
     {
61
     {
61
-        val dateFormat = SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefault())
62
+        val dateFormat = SimpleDateFormat("yyyy-MM-dd hh:mm:ss z", Locale.getDefault())
62
         try {
63
         try {
63
-            val t: Date? = dateFormat.parse(s)
64
+            val t: Date? = dateFormat.parse("$s ${Planning.instance.timeZone.id}")
65
+            Log.d(tag, "date: $s -> $t")
64
             return t!!.time
66
             return t!!.time
65
         } catch (e: ParseException) {
67
         } catch (e: ParseException) {
66
             e.printStackTrace()
68
             e.printStackTrace()
90
 
92
 
91
         currentSong.stopTime.value = ends
93
         currentSong.stopTime.value = ends
92
 
94
 
95
+        val apiTime = getTimestamp(res.getJSONObject("station").getString("schedulerTime"))
93
         // I noticed that the server has a big (3 to 9 seconds !!) offset for current time.
96
         // I noticed that the server has a big (3 to 9 seconds !!) offset for current time.
94
         // we can measure it when the player is playing, to compensate it and have our progress bar perfectly timed
97
         // we can measure it when the player is playing, to compensate it and have our progress bar perfectly timed
95
         // latencyCompensator is set to null when beginPlaying() (we can't measure it at the moment we start playing, since we're in the middle of a song),
98
         // latencyCompensator is set to null when beginPlaying() (we can't measure it at the moment we start playing, since we're in the middle of a song),
96
         // at this moment, we set it to 0. Then, next time the updateApi is called when we're playing, we measure the latency and we set out latencyComparator.
99
         // at this moment, we set it to 0. Then, next time the updateApi is called when we're playing, we measure the latency and we set out latencyComparator.
97
         if(isCompensatingLatency)
100
         if(isCompensatingLatency)
98
         {
101
         {
99
-            latencyCompensator = getTimestamp(res.getJSONObject("station").getString("schedulerTime")) - (currentSong.startTime.value ?: getTimestamp(res.getJSONObject("station").getString("schedulerTime")))
100
-            //[REMOVE LOG CALLS]Log.d((tag, "latency compensator set to ${(latencyCompensator).toFloat()/1000} s")
102
+            latencyCompensator = apiTime - (currentSong.startTime.value!!)
103
+            //[REMOVE LOG CALLS]Log.d(tag, "latency compensator set to ${(latencyCompensator).toFloat() / 1000} s")
101
         }
104
         }
102
-        currentTime.value = getTimestamp(res.getJSONObject("station").getString("schedulerTime")) - (latencyCompensator)
105
+        currentTime.value = apiTime - (latencyCompensator)
103
 
106
 
104
         /*
107
         /*
105
         val listeners = resMain.getInt("listeners")
108
         val listeners = resMain.getInt("listeners")