Skip to content

Commit

Permalink
fix crash on setting
Browse files Browse the repository at this point in the history
  • Loading branch information
lizongying committed Mar 29, 2024
1 parent 65c4b0c commit fd897f6
Show file tree
Hide file tree
Showing 12 changed files with 119 additions and 43 deletions.
11 changes: 11 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
## 更新日志

### v1.7.2(通用)

* 支持节目列表网格样式和行样式切换,软件重启后生效
* 节目列表样式变更

### v1.7.1(安卓5及以上专用)

* 解决设置页更新闪退的问题
* 凤凰卫视回归
* 解决368问题

### v1.7.0(通用)

* 网络请求优化
Expand Down
18 changes: 16 additions & 2 deletions app/src/main/java/com/lizongying/mytv/CardPresenter.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.lizongying.mytv

import android.content.Context
import android.graphics.Color
import android.view.ContextThemeWrapper
import android.view.ViewGroup
import android.widget.ImageView
import androidx.leanback.widget.ImageCardView
import androidx.leanback.widget.Presenter
import androidx.lifecycle.LifecycleOwner
import com.bumptech.glide.Glide
import com.lizongying.mytv.models.TVViewModel

class CardPresenter(
private val owner: LifecycleOwner,
private val context: Context,
) : Presenter() {

override fun onCreateViewHolder(parent: ViewGroup): ViewHolder {
Expand Down Expand Up @@ -39,6 +39,20 @@ class CardPresenter(
cardView.setBackgroundColor(Color.WHITE)
cardView.setMainImageScaleType(ImageView.ScaleType.CENTER_INSIDE)

// cardView.setOnFocusChangeListener { v, hasFocus ->
// run {
// if (hasFocus) {
// if (v != null) {
// (v as ImageCardView).setInfoAreaBackgroundColor(context.resources.getColor(R.color.focus))
// }
// } else {
// if (v != null) {
// (v as ImageCardView).setInfoAreaBackgroundColor(context.resources.getColor(R.color.ic_launcher_background))
// }
// }
// }
// }

val epg = tvViewModel.epg.value?.filter { it.beginTime < Utils.getDateTimestamp() }
if (!epg.isNullOrEmpty()) {
cardView.contentText = epg.last().title
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ import android.app.Dialog
import android.os.Bundle
import androidx.fragment.app.DialogFragment

class ConfirmationDialogFragment(private val listener: ConfirmationDialogListener) :
DialogFragment() {
class ConfirmationFragment(
private val listener: ConfirmationListener,
private val message: String
) : DialogFragment() {

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
val builder = AlertDialog.Builder(it)
builder.setTitle("确认")
.setMessage("确认更新吗?")
builder.setTitle("确定更新吗?")
.setMessage(message)
.setPositiveButton(
"确定"
) { _, _ ->
Expand All @@ -23,12 +25,11 @@ class ConfirmationDialogFragment(private val listener: ConfirmationDialogListene
) { _, _ ->
listener.onCancel()
}
// 创建并返回 AlertDialog 对象
builder.create()
} ?: throw IllegalStateException("Activity cannot be null")
}

interface ConfirmationDialogListener {
interface ConfirmationListener {
fun onConfirm()
fun onCancel()
}
Expand Down
11 changes: 7 additions & 4 deletions app/src/main/java/com/lizongying/mytv/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
.add(R.id.main_browse_fragment, infoFragment)
.add(R.id.main_browse_fragment, channelFragment)
.add(R.id.main_browse_fragment, mainFragment)
// .add(R.id.main_browse_fragment, errorFragment)
.hide(mainFragment)
// .hide(errorFragment)
.commit()
}
gestureDetector = GestureDetector(this, GestureListener())
Expand Down Expand Up @@ -169,11 +167,15 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
handler.postDelayed(hideMain, delayHideMain)
}

fun settingActive() {
fun settingDelayHide() {
handler.removeCallbacks(hideSetting)
handler.postDelayed(hideSetting, delayHideSetting)
}

fun settingNeverHide() {
handler.removeCallbacks(hideSetting)
}

private val hideMain = Runnable {
if (!mainFragment.isHidden) {
supportFragmentManager.beginTransaction().hide(mainFragment).commit()
Expand Down Expand Up @@ -268,7 +270,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
Log.i(TAG, "settingFragment ${settingFragment.isVisible}")
if (!settingFragment.isVisible) {
settingFragment.show(supportFragmentManager, "setting")
settingActive()
settingDelayHide()
} else {
handler.removeCallbacks(hideSetting)
settingFragment.dismiss()
Expand Down Expand Up @@ -334,6 +336,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
}

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
Log.i(TAG, "keyCode $keyCode, event $event")
when (keyCode) {
KeyEvent.KEYCODE_0 -> {
showChannel("0")
Expand Down
39 changes: 31 additions & 8 deletions app/src/main/java/com/lizongying/mytv/MainFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ package com.lizongying.mytv

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.leanback.app.BrowseSupportFragment
import androidx.leanback.widget.ArrayObjectAdapter
import androidx.leanback.widget.HeaderItem
import androidx.leanback.widget.ImageCardView
import androidx.leanback.widget.ListRow
import androidx.leanback.widget.ListRowPresenter
import androidx.leanback.widget.ListRowPresenter.SelectItemViewHolderTask
Expand Down Expand Up @@ -38,6 +40,29 @@ class MainFragment : BrowseSupportFragment() {
headersState = HEADERS_DISABLED
}

// override fun onCreateView(
// inflater: LayoutInflater,
// container: ViewGroup?,
// savedInstanceState: Bundle?
// ): View? {
// val rootView = super.onCreateView(inflater, container, savedInstanceState)
// rootView?.setOnClickListener {
// Log.i(TAG, "main on click")
// fragmentManager!!.beginTransaction().hide(this).commit()
// }
// mainFragment.view?.setOnClickListener {
// Log.i(TAG, "mainFragment on click")
// fragmentManager!!.beginTransaction().hide(this).commit()
// }
// getRowsSupportFragment().view?.setOnClickListener {
// Log.i(TAG, "getRowsSupportFragment on click")
// fragmentManager!!.beginTransaction().hide(this).commit()
// }
//
//
// return rootView
// }

override fun onStart() {
Log.i(TAG, "onStart")
super.onStart()
Expand Down Expand Up @@ -122,7 +147,7 @@ class MainFragment : BrowseSupportFragment() {
private fun loadRows() {
rowsAdapter = ArrayObjectAdapter(ListRowPresenter())

val cardPresenter = CardPresenter(viewLifecycleOwner)
val cardPresenter = CardPresenter(context!!)

var idx: Long = 0
for ((k, v) in TVList.list) {
Expand All @@ -133,8 +158,6 @@ class MainFragment : BrowseSupportFragment() {
tvViewModel.setItemPosition(idx2)
tvListViewModel.addTVViewModel(tvViewModel)
listRowAdapter.add(tvViewModel)

updateEPG(tvViewModel)
}
tvListViewModel.maxNum.add(v.size)
val header = HeaderItem(idx, k)
Expand Down Expand Up @@ -209,9 +232,6 @@ class MainFragment : BrowseSupportFragment() {
itemViewHolder: Presenter.ViewHolder?, item: Any?,
rowViewHolder: RowPresenter.ViewHolder, row: Row
) {
// if (itemViewHolder !=null) {
// (itemViewHolder.view as ImageCardView).setInfoAreaBackgroundColor(resources.getColor(R.color.focus))
// }
if (item is TVViewModel) {
tvListViewModel.setItemPositionCurrent(item.getTV().id)
(activity as MainActivity).mainActive()
Expand All @@ -236,8 +256,11 @@ class MainFragment : BrowseSupportFragment() {
}

fun fragmentReady() {
// request.fetchPage()
tvListViewModel.getTVViewModel(itemPosition)?.changed()

tvListViewModel.tvListViewModel.value?.forEach { tvViewModel ->
updateEPG(tvViewModel)
}
}

fun play(itemPosition: Int) {
Expand Down
20 changes: 13 additions & 7 deletions app/src/main/java/com/lizongying/mytv/Request.kt
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ object Request {
private var initRetryTimes = 0
private var initRetryMaxTimes = 0

private var openid = "vu0-8lgGV2LW9QjDeucB9H12d_6HQWmTFgqCWg5o-VBQN4"

fun onCreate() {
Log.i(TAG, "onCreate")
fetchInfoV2()
Expand Down Expand Up @@ -264,7 +266,7 @@ object Request {
}
}
} else {
Log.e(TAG, "$title status error")
Log.e(TAG, "$title status error $data")
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
tvModel.retryTimes++
if (tvModel.getTV().needToken) {
Expand Down Expand Up @@ -319,13 +321,13 @@ object Request {
tvModel.needGetToken = false
tvModel.tokenYSPRetryTimes = 0
val cookie =
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109;yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token"
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109;yspopenid=$openid; vusession=$token"
fetchAuth(tvModel, cookie)
} else if (response.code() == 304) {
tvModel.needGetToken = false
tvModel.tokenYSPRetryTimes = 0
val cookie =
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109; yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token"
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109; yspopenid=$openid; vusession=$token"
fetchVideo(tvModel, cookie)
} else {
Log.e(TAG, "info status error")
Expand Down Expand Up @@ -358,7 +360,7 @@ object Request {
})
} else {
val cookie =
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109;yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token"
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109;yspopenid=$openid; vusession=$token"
fetchAuth(tvModel, cookie)
}
}
Expand All @@ -376,13 +378,13 @@ object Request {
tvModel.needGetToken = false
tvModel.tokenYSPRetryTimes = 0
val cookie =
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109; yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token"
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109; yspopenid=$openid; vusession=$token"
fetchVideo(tvModel, cookie)
} else if (response.code() == 304) {
tvModel.needGetToken = false
tvModel.tokenYSPRetryTimes = 0
val cookie =
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109; yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token"
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109; yspopenid=$openid; vusession=$token"
fetchVideo(tvModel, cookie)
} else {
Log.e(TAG, "info status error")
Expand Down Expand Up @@ -415,7 +417,7 @@ object Request {
})
} else {
val cookie =
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109; yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token"
"versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=120; appid=1400421205; yspappid=519748109; yspopenid=$openid; vusession=$token"
fetchVideo(tvModel, cookie)
}
}
Expand Down Expand Up @@ -495,10 +497,14 @@ object Request {
.enqueue(object : Callback<InfoV2> {
override fun onResponse(call: Call<InfoV2>, response: Response<InfoV2>) {
if (response.isSuccessful) {
val o = response.body()?.o
val t = response.body()?.t
val f = response.body()?.f
val e = response.body()?.e
val c = response.body()?.c
if (!o.isNullOrEmpty()) {
openid = o
}
if (!t.isNullOrEmpty()) {
token = t
Log.i(TAG, "token success $token")
Expand Down
23 changes: 17 additions & 6 deletions app/src/main/java/com/lizongying/mytv/SettingFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,39 +34,50 @@ class SettingFragment : DialogFragment() {
isChecked = SP.channelReversal
setOnCheckedChangeListener { _, isChecked ->
SP.channelReversal = isChecked
(activity as MainActivity).settingActive()
(activity as MainActivity).settingDelayHide()
}
}

binding.switchChannelNum.run {
isChecked = SP.channelNum
setOnCheckedChangeListener { _, isChecked ->
SP.channelNum = isChecked
(activity as MainActivity).settingActive()
(activity as MainActivity).settingDelayHide()
}
}

binding.switchBootStartup.run {
isChecked = SP.bootStartup
setOnCheckedChangeListener { _, isChecked ->
SP.bootStartup = isChecked
(activity as MainActivity).settingActive()
(activity as MainActivity).settingDelayHide()
}
}

updateManager = UpdateManager(context, this, context.appVersionCode)
binding.checkVersion.setOnClickListener(OnClickListenerCheckVersion(updateManager))
binding.checkVersion.setOnClickListener(
OnClickListenerCheckVersion(
activity as MainActivity,
updateManager
)
)

return binding.root
}

fun setVersionName(versionName: String) {
binding.versionName.text = versionName
if (_binding != null) {
binding.versionName.text = versionName
}
}

internal class OnClickListenerCheckVersion(private val updateManager: UpdateManager) :
internal class OnClickListenerCheckVersion(
private val mainActivity: MainActivity,
private val updateManager: UpdateManager
) :
View.OnClickListener {
override fun onClick(view: View?) {
mainActivity.settingDelayHide()
updateManager.checkAndUpdate()
}
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/lizongying/mytv/TVList.kt
Original file line number Diff line number Diff line change
Expand Up @@ -960,7 +960,7 @@ object TVList {
}
}
val array = arrayOf("央视", "地方")
list = list.filterKeys { it in array }
// list = list.filterKeys { it in array }
return list
}
}

0 comments on commit fd897f6

Please sign in to comment.