Skip to content

Commit

Permalink
replay on resume
Browse files Browse the repository at this point in the history
  • Loading branch information
lizongying committed Feb 1, 2024
1 parent 4bdc625 commit dd4550c
Show file tree
Hide file tree
Showing 14 changed files with 243 additions and 105 deletions.
22 changes: 17 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 我的电视

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

## 使用

Expand All @@ -14,16 +14,28 @@

## 更新日志

### v1.5.1(高版本专用)

* 性能优化

### v1.5.0(通用版)

* 修复部分情况下APP切换后无法继续播放的问题

### v1.4.9(高版本专用)

* 同步v1.4.8

### v1.4.8(通用版)

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

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

* 修复部分用户cctv13播放过程中卡住的问题
* 调整cctv的频道顺序
* 修复部分用户CCTV13播放过程中卡住的问题
* 调整CCTV的频道顺序

### v1.4.6(通用版)

Expand Down
8 changes: 5 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,19 @@
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:largeHeap="true"
android:icon="@drawable/logo"
android:logo="@drawable/logo"
android:banner="@drawable/banner"
android:label="@string/app_name"
android:supportsRtl="true"
android:networkSecurityConfig="@xml/network"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.MyTV">
<activity
android:keepScreenOn="true"
android:name=".MainActivity"
android:banner="@drawable/banner"
android:exported="true"
android:icon="@drawable/logo"
android:logo="@drawable/logo"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
Binary file modified app/src/main/cpp/arm64-v8a/libnative.so
Binary file not shown.
Binary file modified app/src/main/cpp/armeabi-v7a/libnative.so
Binary file not shown.
1 change: 0 additions & 1 deletion app/src/main/java/com/lizongying/mytv/InfoFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ class InfoFragment : Fragment() {
.into(binding.infoLogo)
}


val program = tvViewModel.getProgramOne()
if (program != null) {
binding.infoDesc.text = program.name
Expand Down
52 changes: 34 additions & 18 deletions app/src/main/java/com/lizongying/mytv/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,17 @@ class MainActivity : FragmentActivity() {
private lateinit var gestureDetector: GestureDetector

private val handler = Handler()
private val delay: Long = 4000
private val delayHideHelp: Long = 10000
private val delayHideMain: Long = 5000
private val delayHideSetting: Long = 10000

private lateinit var sharedPref: SharedPreferences
lateinit var sharedPref: SharedPreferences
private var channelReversal = false
private var channelNum = true

private var versionName = ""

override fun onCreate(savedInstanceState: Bundle?) {
Log.i(TAG, "onCreate")
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

Expand All @@ -60,7 +61,6 @@ class MainActivity : FragmentActivity() {
.add(R.id.main_browse_fragment, mainFragment)
.hide(mainFragment)
.commit()
mainFragment.view?.requestFocus()
}
gestureDetector = GestureDetector(this, GestureListener())

Expand Down Expand Up @@ -133,11 +133,11 @@ class MainActivity : FragmentActivity() {
}

fun keepRunnable() {
handler.removeCallbacks(hideRunnable)
handler.postDelayed(hideRunnable, delay)
handler.removeCallbacks(hideMain)
handler.postDelayed(hideMain, delayHideMain)
}

private val hideRunnable = Runnable {
private val hideMain = Runnable {
if (!mainFragment.isHidden) {
supportFragmentManager.beginTransaction().hide(mainFragment).commit()
}
Expand Down Expand Up @@ -223,23 +223,23 @@ class MainActivity : FragmentActivity() {
this.channelNum = channelNum
}

private fun showHelp() {
private fun showSetting() {
if (!mainFragment.isHidden) {
return
}

Log.i(TAG, "settingFragment ${settingFragment.isVisible}")
if (!settingFragment.isVisible) {
settingFragment.show(supportFragmentManager, "setting")
handler.removeCallbacks(hideHelp)
handler.postDelayed(hideHelp, delayHideHelp)
handler.removeCallbacks(hideSetting)
handler.postDelayed(hideSetting, delayHideSetting)
} else {
handler.removeCallbacks(hideHelp)
handler.removeCallbacks(hideSetting)
settingFragment.dismiss()
}
}

private val hideHelp = Runnable {
private val hideSetting = Runnable {
if (settingFragment.isVisible) {
settingFragment.dismiss()
}
Expand Down Expand Up @@ -360,27 +360,27 @@ class MainActivity : FragmentActivity() {
}

KeyEvent.KEYCODE_BOOKMARK -> {
showHelp()
showSetting()
return true
}

KeyEvent.KEYCODE_UNKNOWN -> {
showHelp()
showSetting()
return true
}

KeyEvent.KEYCODE_HELP -> {
showHelp()
showSetting()
return true
}

KeyEvent.KEYCODE_SETTINGS -> {
showHelp()
showSetting()
return true
}

KeyEvent.KEYCODE_MENU -> {
showHelp()
showSetting()
return true
}

Expand Down Expand Up @@ -478,7 +478,7 @@ class MainActivity : FragmentActivity() {

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

override fun onStart() {
Log.i(TAG, "onStart")
super.onStart()
}

override fun onResume() {
Log.i(TAG, "onResume")
super.onResume()
}

override fun onPause() {
Log.i(TAG, "onPause")
super.onPause()
handler.removeCallbacks(hideMain)
}

companion object {
private const val TAG = "MainActivity"
private const val CHANNEL_REVERSAL = "channel_reversal"
Expand Down
27 changes: 13 additions & 14 deletions app/src/main/java/com/lizongying/mytv/MainFragment.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.lizongying.mytv

import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.os.Handler
Expand Down Expand Up @@ -36,7 +35,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {

var tvListViewModel = TVListViewModel()

private var sharedPref: SharedPreferences? = null
private lateinit var sharedPref: SharedPreferences

private var lastVideoUrl = ""

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

activity?.let { request.initYSP(it) }
sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
sharedPref = (activity as? MainActivity)?.sharedPref!!

view?.post {
val content = binding.content
Expand Down Expand Up @@ -98,13 +97,13 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
mUpdateProgramRunnable = UpdateProgramRunnable()
handler.post(mUpdateProgramRunnable)

itemPosition = sharedPref?.getInt(POSITION, 0)!!
itemPosition = sharedPref.getInt(POSITION, 0)
if (itemPosition >= tvListViewModel.size()) {
itemPosition = 0
}
tvListViewModel.setItemPosition(itemPosition)
setPosition()
tvListViewModel.getTVListViewModel().value?.forEach { tvViewModel ->
tvListViewModel.tvListViewModel.value?.forEach { tvViewModel ->
tvViewModel.errInfo.observe(viewLifecycleOwner) { _ ->
if (tvViewModel.errInfo.value != null
&& tvViewModel.id.value == itemPosition
Expand Down Expand Up @@ -262,7 +261,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
tvViewModel.programUpdateTime = timestamp
request.fetchProgram(tvViewModel)
} else {
if (timestamp - tvViewModel.program.value!!.last().et < 600) {
if (tvViewModel.program.value!!.last().et - timestamp < 600) {
tvViewModel.programUpdateTime = timestamp
request.fetchProgram(tvViewModel)
}
Expand All @@ -272,7 +271,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {

inner class UpdateProgramRunnable : Runnable {
override fun run() {
tvListViewModel.getTVListViewModel().value?.filter { it.programId.value != null }
tvListViewModel.tvListViewModel.value?.filter { it.programId.value != null }
?.forEach { tvViewModel ->
updateProgram(
tvViewModel
Expand All @@ -282,14 +281,19 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
}
}

override fun onResume() {
Log.i(TAG, "onResume")
super.onResume()
}

override fun onStop() {
Log.i(TAG, "onStop")
super.onStop()
with(sharedPref!!.edit()) {
with(sharedPref.edit()) {
putInt(POSITION, itemPosition)
apply()
}
Log.i(TAG, "POSITION saved")
Log.i(TAG, "$POSITION saved")
}

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

override fun onResume() {
super.onResume()
view?.post { view?.requestFocus() }
}

companion object {
private const val TAG = "MainFragment"
private const val POSITION = "position"
Expand Down
22 changes: 15 additions & 7 deletions app/src/main/java/com/lizongying/mytv/PlayerFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -74,23 +74,31 @@ class PlayerFragment : Fragment() {
@OptIn(UnstableApi::class)
fun play(tvViewModel: TVViewModel) {
this.tvViewModel = tvViewModel
val videoUrlCurrent = tvViewModel.getVideoUrlCurrent()
playerView?.player?.run {
setMediaItem(MediaItem.fromUri(videoUrlCurrent))
setMediaItem(MediaItem.fromUri(tvViewModel.getVideoUrlCurrent()))
prepare()
}
}

override fun onStart() {
Log.i(TAG, "onStart")
super.onStart()
if (playerView != null) {
playerView!!.player?.play()
if (playerView != null && playerView!!.player?.isPlaying == false) {
Log.i(TAG, "replay")
playerView!!.player?.prepare()
} else {
Log.i(TAG, "playing")
}
}

override fun onStop() {
super.onStop()
if (playerView != null) {
override fun onResume() {
Log.i(TAG, "onResume")
super.onResume()
}

override fun onPause() {
super.onPause()
if (playerView != null && playerView!!.player?.isPlaying == true) {
playerView!!.player?.stop()
}
}
Expand Down
Loading

0 comments on commit dd4550c

Please sign in to comment.