Skip to content

Commit dd4550c

Browse files
committed
replay on resume
1 parent 4bdc625 commit dd4550c

File tree

14 files changed

+243
-105
lines changed

14 files changed

+243
-105
lines changed

README.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 我的电视
22

3-
安卓电视直播软件,内置直播源
3+
电视直播软件,安装即可使用
44

55
## 使用
66

@@ -14,16 +14,28 @@
1414

1515
## 更新日志
1616

17+
### v1.5.1(高版本专用)
18+
19+
* 性能优化
20+
21+
### v1.5.0(通用版)
22+
23+
* 修复部分情况下APP切换后无法继续播放的问题
24+
25+
### v1.4.9(高版本专用)
26+
27+
* 同步v1.4.8
28+
1729
### v1.4.8(通用版)
1830

19-
* 频道号从1开始,cctv5+为18
20-
* 提高cctv6清晰度
31+
* 频道号从1开始,CCTV5+为18
32+
* 提高CCTV6清晰度
2133
* 增加天津卫视、新疆卫视
2234

2335
### v1.4.7(高版本专用)
2436

25-
* 修复部分用户cctv13播放过程中卡住的问题
26-
* 调整cctv的频道顺序
37+
* 修复部分用户CCTV13播放过程中卡住的问题
38+
* 调整CCTV的频道顺序
2739

2840
### v1.4.6(通用版)
2941

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,19 @@
99
<uses-permission android:name="android.permission.INTERNET" />
1010
<application
1111
android:allowBackup="true"
12+
android:largeHeap="true"
1213
android:icon="@drawable/logo"
14+
android:logo="@drawable/logo"
15+
android:banner="@drawable/banner"
1316
android:label="@string/app_name"
1417
android:supportsRtl="true"
18+
android:networkSecurityConfig="@xml/network"
19+
android:usesCleartextTraffic="true"
1520
android:theme="@style/Theme.MyTV">
1621
<activity
1722
android:keepScreenOn="true"
1823
android:name=".MainActivity"
19-
android:banner="@drawable/banner"
2024
android:exported="true"
21-
android:icon="@drawable/logo"
22-
android:logo="@drawable/logo"
2325
android:screenOrientation="landscape">
2426
<intent-filter>
2527
<action android:name="android.intent.action.MAIN" />
-64 Bytes
Binary file not shown.
-64 Bytes
Binary file not shown.

app/src/main/java/com/lizongying/mytv/InfoFragment.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ class InfoFragment : Fragment() {
4848
.into(binding.infoLogo)
4949
}
5050

51-
5251
val program = tvViewModel.getProgramOne()
5352
if (program != null) {
5453
binding.infoDesc.text = program.name

app/src/main/java/com/lizongying/mytv/MainActivity.kt

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,17 @@ class MainActivity : FragmentActivity() {
3535
private lateinit var gestureDetector: GestureDetector
3636

3737
private val handler = Handler()
38-
private val delay: Long = 4000
39-
private val delayHideHelp: Long = 10000
38+
private val delayHideMain: Long = 5000
39+
private val delayHideSetting: Long = 10000
4040

41-
private lateinit var sharedPref: SharedPreferences
41+
lateinit var sharedPref: SharedPreferences
4242
private var channelReversal = false
4343
private var channelNum = true
4444

4545
private var versionName = ""
4646

4747
override fun onCreate(savedInstanceState: Bundle?) {
48+
Log.i(TAG, "onCreate")
4849
super.onCreate(savedInstanceState)
4950
setContentView(R.layout.activity_main)
5051

@@ -60,7 +61,6 @@ class MainActivity : FragmentActivity() {
6061
.add(R.id.main_browse_fragment, mainFragment)
6162
.hide(mainFragment)
6263
.commit()
63-
mainFragment.view?.requestFocus()
6464
}
6565
gestureDetector = GestureDetector(this, GestureListener())
6666

@@ -133,11 +133,11 @@ class MainActivity : FragmentActivity() {
133133
}
134134

135135
fun keepRunnable() {
136-
handler.removeCallbacks(hideRunnable)
137-
handler.postDelayed(hideRunnable, delay)
136+
handler.removeCallbacks(hideMain)
137+
handler.postDelayed(hideMain, delayHideMain)
138138
}
139139

140-
private val hideRunnable = Runnable {
140+
private val hideMain = Runnable {
141141
if (!mainFragment.isHidden) {
142142
supportFragmentManager.beginTransaction().hide(mainFragment).commit()
143143
}
@@ -223,23 +223,23 @@ class MainActivity : FragmentActivity() {
223223
this.channelNum = channelNum
224224
}
225225

226-
private fun showHelp() {
226+
private fun showSetting() {
227227
if (!mainFragment.isHidden) {
228228
return
229229
}
230230

231231
Log.i(TAG, "settingFragment ${settingFragment.isVisible}")
232232
if (!settingFragment.isVisible) {
233233
settingFragment.show(supportFragmentManager, "setting")
234-
handler.removeCallbacks(hideHelp)
235-
handler.postDelayed(hideHelp, delayHideHelp)
234+
handler.removeCallbacks(hideSetting)
235+
handler.postDelayed(hideSetting, delayHideSetting)
236236
} else {
237-
handler.removeCallbacks(hideHelp)
237+
handler.removeCallbacks(hideSetting)
238238
settingFragment.dismiss()
239239
}
240240
}
241241

242-
private val hideHelp = Runnable {
242+
private val hideSetting = Runnable {
243243
if (settingFragment.isVisible) {
244244
settingFragment.dismiss()
245245
}
@@ -360,27 +360,27 @@ class MainActivity : FragmentActivity() {
360360
}
361361

362362
KeyEvent.KEYCODE_BOOKMARK -> {
363-
showHelp()
363+
showSetting()
364364
return true
365365
}
366366

367367
KeyEvent.KEYCODE_UNKNOWN -> {
368-
showHelp()
368+
showSetting()
369369
return true
370370
}
371371

372372
KeyEvent.KEYCODE_HELP -> {
373-
showHelp()
373+
showSetting()
374374
return true
375375
}
376376

377377
KeyEvent.KEYCODE_SETTINGS -> {
378-
showHelp()
378+
showSetting()
379379
return true
380380
}
381381

382382
KeyEvent.KEYCODE_MENU -> {
383-
showHelp()
383+
showSetting()
384384
return true
385385
}
386386

@@ -478,7 +478,7 @@ class MainActivity : FragmentActivity() {
478478

479479
private fun hashSignature(signature: Signature): String {
480480
return try {
481-
val md = MessageDigest.getInstance("SHA-256")
481+
val md = MessageDigest.getInstance("MD5")
482482
md.update(signature.toByteArray())
483483
val digest = md.digest()
484484
digest.let { it -> it.joinToString("") { "%02x".format(it) } }
@@ -488,6 +488,22 @@ class MainActivity : FragmentActivity() {
488488
}
489489
}
490490

491+
override fun onStart() {
492+
Log.i(TAG, "onStart")
493+
super.onStart()
494+
}
495+
496+
override fun onResume() {
497+
Log.i(TAG, "onResume")
498+
super.onResume()
499+
}
500+
501+
override fun onPause() {
502+
Log.i(TAG, "onPause")
503+
super.onPause()
504+
handler.removeCallbacks(hideMain)
505+
}
506+
491507
companion object {
492508
private const val TAG = "MainActivity"
493509
private const val CHANNEL_REVERSAL = "channel_reversal"

app/src/main/java/com/lizongying/mytv/MainFragment.kt

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.lizongying.mytv
22

3-
import android.content.Context
43
import android.content.SharedPreferences
54
import android.os.Bundle
65
import android.os.Handler
@@ -36,7 +35,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
3635

3736
var tvListViewModel = TVListViewModel()
3837

39-
private var sharedPref: SharedPreferences? = null
38+
private lateinit var sharedPref: SharedPreferences
4039

4140
private var lastVideoUrl = ""
4241

@@ -57,7 +56,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
5756
super.onActivityCreated(savedInstanceState)
5857

5958
activity?.let { request.initYSP(it) }
60-
sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
59+
sharedPref = (activity as? MainActivity)?.sharedPref!!
6160

6261
view?.post {
6362
val content = binding.content
@@ -98,13 +97,13 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
9897
mUpdateProgramRunnable = UpdateProgramRunnable()
9998
handler.post(mUpdateProgramRunnable)
10099

101-
itemPosition = sharedPref?.getInt(POSITION, 0)!!
100+
itemPosition = sharedPref.getInt(POSITION, 0)
102101
if (itemPosition >= tvListViewModel.size()) {
103102
itemPosition = 0
104103
}
105104
tvListViewModel.setItemPosition(itemPosition)
106105
setPosition()
107-
tvListViewModel.getTVListViewModel().value?.forEach { tvViewModel ->
106+
tvListViewModel.tvListViewModel.value?.forEach { tvViewModel ->
108107
tvViewModel.errInfo.observe(viewLifecycleOwner) { _ ->
109108
if (tvViewModel.errInfo.value != null
110109
&& tvViewModel.id.value == itemPosition
@@ -262,7 +261,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
262261
tvViewModel.programUpdateTime = timestamp
263262
request.fetchProgram(tvViewModel)
264263
} else {
265-
if (timestamp - tvViewModel.program.value!!.last().et < 600) {
264+
if (tvViewModel.program.value!!.last().et - timestamp < 600) {
266265
tvViewModel.programUpdateTime = timestamp
267266
request.fetchProgram(tvViewModel)
268267
}
@@ -272,7 +271,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
272271

273272
inner class UpdateProgramRunnable : Runnable {
274273
override fun run() {
275-
tvListViewModel.getTVListViewModel().value?.filter { it.programId.value != null }
274+
tvListViewModel.tvListViewModel.value?.filter { it.programId.value != null }
276275
?.forEach { tvViewModel ->
277276
updateProgram(
278277
tvViewModel
@@ -282,14 +281,19 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
282281
}
283282
}
284283

284+
override fun onResume() {
285+
Log.i(TAG, "onResume")
286+
super.onResume()
287+
}
288+
285289
override fun onStop() {
286290
Log.i(TAG, "onStop")
287291
super.onStop()
288-
with(sharedPref!!.edit()) {
292+
with(sharedPref.edit()) {
289293
putInt(POSITION, itemPosition)
290294
apply()
291295
}
292-
Log.i(TAG, "POSITION saved")
296+
Log.i(TAG, "$POSITION saved")
293297
}
294298

295299
override fun onDestroy() {
@@ -304,11 +308,6 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
304308
_binding = null
305309
}
306310

307-
override fun onResume() {
308-
super.onResume()
309-
view?.post { view?.requestFocus() }
310-
}
311-
312311
companion object {
313312
private const val TAG = "MainFragment"
314313
private const val POSITION = "position"

app/src/main/java/com/lizongying/mytv/PlayerFragment.kt

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,23 +74,31 @@ class PlayerFragment : Fragment() {
7474
@OptIn(UnstableApi::class)
7575
fun play(tvViewModel: TVViewModel) {
7676
this.tvViewModel = tvViewModel
77-
val videoUrlCurrent = tvViewModel.getVideoUrlCurrent()
7877
playerView?.player?.run {
79-
setMediaItem(MediaItem.fromUri(videoUrlCurrent))
78+
setMediaItem(MediaItem.fromUri(tvViewModel.getVideoUrlCurrent()))
8079
prepare()
8180
}
8281
}
8382

8483
override fun onStart() {
84+
Log.i(TAG, "onStart")
8585
super.onStart()
86-
if (playerView != null) {
87-
playerView!!.player?.play()
86+
if (playerView != null && playerView!!.player?.isPlaying == false) {
87+
Log.i(TAG, "replay")
88+
playerView!!.player?.prepare()
89+
} else {
90+
Log.i(TAG, "playing")
8891
}
8992
}
9093

91-
override fun onStop() {
92-
super.onStop()
93-
if (playerView != null) {
94+
override fun onResume() {
95+
Log.i(TAG, "onResume")
96+
super.onResume()
97+
}
98+
99+
override fun onPause() {
100+
super.onPause()
101+
if (playerView != null && playerView!!.player?.isPlaying == true) {
94102
playerView!!.player?.stop()
95103
}
96104
}

0 commit comments

Comments
 (0)