diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..4973964 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,83 @@ +name: Bug 反馈 +description: 反馈一个 Bug +labels: [ "bug" ] +title: "[BUG] " +body: + - type: checkboxes + id: checklist + attributes: + label: 检查清单 + description: 确保我们的错误报告表单适合您。 + options: + - label: 之前没有人提交过类似或相同的 bug report。 + required: true + - label: 我正在使用本软件的最新版本。 + required: true + - type: dropdown + id: version + attributes: + label: my-ty 版本 + description: 请选择正在使用的版本 + options: + - 最新稳定版 + - 最新 CI 版 + validations: + required: true + - type: textarea + id: bug + attributes: + label: Bug 描述 + description: 请描述 bug 详情 + placeholder: | + e.g. Crashed when generating snapshot. + validations: + required: true + - type: textarea + id: expected + attributes: + label: 预期行为 + description: 你预期会发生什么? + placeholder: | + e.g. A New snapshot! + validations: + required: true + - type: textarea + id: actual + attributes: + label: 实际行为 + description: 反而发生了什么? + placeholder: | + e.g. Crashed. + validations: + required: true + - type: textarea + id: steps + attributes: + label: 复现步骤 + description: 如何复现这个 bug。 + placeholder: | + 1. Open the app + 2. Crashed + + What an app. + - type: input + id: ui + attributes: + label: UI / OS + description: 你的电视系统 UI 或 OS 或 品牌 + placeholder: TCL / XIAOMI / PHONE / etc. + validations: + required: true + - type: input + id: android + attributes: + label: Android 版本 + description: 你的 Android 版本 + placeholder: "12" + validations: + required: true + - type: textarea + id: additional + attributes: + label: 额外信息 + description: 任何你觉得值得说的。 diff --git a/.github/ISSUE_TEMPLATE/fr.yml b/.github/ISSUE_TEMPLATE/fr.yml new file mode 100644 index 0000000..e409ba4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/fr.yml @@ -0,0 +1,36 @@ +name: 功能(新频道)请求 +description: 提出一个建议 +labels: [ "enhancement" ] +title: "[FR] " +body: + - type: checkboxes + id: checklist + attributes: + label: 检查清单 + description: 确保我们的错误报告表单适合您。 + options: + - label: 之前没有人提交过类似或相同的功能请求。 + required: true + - label: 这个建议不会背离 LibChecker 的初衷。 + required: true + - type: textarea + id: propose + attributes: + label: 改进目的 + description: 改进有什么用 + placeholder: | + Show your idea here. + validations: + required: true + - type: textarea + id: solution + attributes: + label: 解决方案 + description: 你会怎么完成这个改进? + placeholder: | + How to do it on your opinion? Or left this blank + - type: textarea + id: addition + attributes: + label: 额外信息 + description: 任何你觉得值得说的。 diff --git a/README.md b/README.md index e8764c4..6c29bc2 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ 下载安装 [releases](https://github.com/lizongying/my-tv/releases/) -其他地址 [my-tv](https://lyrics.run/my-tv.html) +更多地址 [my-tv](https://lyrics.run/my-tv.html) ![image](./screenshots/img_3.png) ![image](./screenshots/img_2.png) @@ -14,56 +14,110 @@ ## 更新日志 -### v1.5.8(通用版) +### v1.6.0(通用) + +* 通用(春晚緊急修復) + +### v1.5.9(安卓5及以上专用) + +* 解决天猫魔盒闪退问题 + +### v1.5.8(通用) * 修复央视6画质差的问题 * 增加兵团卫视 * 播放失败重试 -### v1.5.6(通用版) +### v1.5.7(安卓5及以上专用) + +* 修复播放失败的问题 + +### v1.5.6(通用) * 解决部分设备系统时间不对导致播放失败的问题 -### v1.5.2(通用版) +### v1.5.5(安卓5及以上专用) + +* 修复播放失败的问题 +* 修复APP恢复后频道号、频道列表不自动消失的问题 + +### v1.5.4(通用) + +* 修复播放失败的问题 + +### 以下已不可用 + +### v1.5.3(安卓5及以上专用) + +* 修复部分情况下APP切换后无法继续播放的问题 +* 优化重试逻辑 + +### v1.5.2(通用) * 修复APP恢复后频道号、频道列表不自动消失的问题 -### v1.5.1(高版本专用) +### v1.5.1(安卓5及以上专用) * 性能优化 -### v1.5.0(通用版) +### v1.5.0(通用) * 修复部分情况下APP切换后无法继续播放的问题 -### v1.4.9(高版本专用) +### v1.4.9(安卓5及以上专用) * 同步v1.4.8 -### v1.4.8(通用版) +### v1.4.8(通用) * 频道号从1开始,CCTV5+为18 * 提高CCTV6清晰度 * 增加天津卫视、新疆卫视 -### v1.4.7(高版本专用) +### v1.4.7(安卓5及以上专用) * 修复部分用户CCTV13播放过程中卡住的问题 * 调整CCTV的频道顺序 -### v1.4.6(通用版) +### v1.4.6(通用) * 10以下频道不再需要先按0 -### v1.4.5(高版本专用) +### v1.4.5(安卓5及以上专用) * 数字选台配置 -### v1.4.4(通用版) +### v1.4.4(通用) * 优化图标显示 * 增加换台反转 +### v1.4.3(安卓5及以上专用) + +* 支持频道反转配置 + +### v1.4.2(通用) + +* 支持安卓4 + +### v1.4.1 + +* 解决部分用户无法打开菜单的问题 + +### v1.4.0 + +* 解决极个别高版本机型黑屏问题 + +### v1.3.9 + +* 提高稳定性 +* 提高连接速度 + +### v1.3.4 + +* 部分错误会提示用户 +* 菜单3秒钟后自动关闭 + ### v1.3.3 * 部分错误会提示用户 @@ -74,6 +128,27 @@ * 增加重试,减少因网络问题导致的播放失败 * 优化横幅banner +### v1.3.1 + +* 增加CCTV 8K 超高清频道 +* 增加国际频道栏目 + +### v1.3.0 + +* 处理368可能失败的情形 + +### v1.2.9 + +* 支持3、6、8 + +### v1.2.8 + +* 兼容16:10等分辨率 + +### v1.2.7 + +* 此版本是为了测试安卓6.0以下版本,如之前可以正常运行,请勿安装。 + ### v1.2.6 * 支持安卓4.2 @@ -94,6 +169,14 @@ * 播放相同的频道,不再重复加载 * 暂时移除部分频道 +### v1.2.3 + +* 固定视频比列为16:9 +* 隐藏全面屏底部的小横条 +* 移除移动专区 +* 修复一个闪退问题 +* 更换图标和应用名 + ## 其他 小米电视可以使用小米电视助手进行安装 @@ -116,9 +199,7 @@ adb install my-tv.apk * 凤凰卫视、凤凰资讯台 * 海外 * 1.5.0 无法安装,1.5.1 可以安装 -* 获取系统时间 * 选中的图标比例能否相差更大 -* 自动重连 * 节目增加预告 ## 赞赏 diff --git a/app/src/main/java/com/lizongying/mytv/CardAdapter.kt b/app/src/main/java/com/lizongying/mytv/CardAdapter.kt index 059e9dc..0049828 100644 --- a/app/src/main/java/com/lizongying/mytv/CardAdapter.kt +++ b/app/src/main/java/com/lizongying/mytv/CardAdapter.kt @@ -2,12 +2,14 @@ package com.lizongying.mytv import android.graphics.Color import android.view.ContextThemeWrapper +import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.view.animation.ScaleAnimation import android.widget.ImageView import androidx.leanback.widget.ImageCardView import androidx.lifecycle.LifecycleOwner +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.lizongying.mytv.models.TVListViewModel @@ -48,7 +50,7 @@ class CardAdapter(private val owner: LifecycleOwner, private var tvListViewModel val tvViewModel = item as TVViewModel val cardView = viewHolder.view as ImageCardView - cardView.setOnFocusChangeListener { _, hasFocus -> + val onFocusChangeListener = View.OnFocusChangeListener { _, hasFocus -> listener?.onItemFocusChange(item, hasFocus) if (hasFocus) { startScaleAnimation(cardView, 0.9f, 1.0f) @@ -57,6 +59,8 @@ class CardAdapter(private val owner: LifecycleOwner, private var tvListViewModel } } + cardView.onFocusChangeListener = onFocusChangeListener + cardView.setOnClickListener { _ -> listener?.onItemClicked(item) } diff --git a/app/src/main/java/com/lizongying/mytv/MainActivity.kt b/app/src/main/java/com/lizongying/mytv/MainActivity.kt index c0c187c..a92f6d2 100644 --- a/app/src/main/java/com/lizongying/mytv/MainActivity.kt +++ b/app/src/main/java/com/lizongying/mytv/MainActivity.kt @@ -93,7 +93,8 @@ class MainActivity : FragmentActivity() { } else { packageInfo.versionCode.toLong() } - settingFragment = SettingFragment(versionName, versionCode, channelReversal, channelNum, bootStartup) + settingFragment = + SettingFragment(versionName, versionCode, channelReversal, channelNum, bootStartup) } fun showInfoFragment(tvViewModel: TVViewModel) { @@ -148,7 +149,7 @@ class MainActivity : FragmentActivity() { if (mainFragment.isHidden) { mainFragment.setPosition() transaction.show(mainFragment) - keepRunnable() + mainActive() } else { transaction.hide(mainFragment) } @@ -156,7 +157,7 @@ class MainActivity : FragmentActivity() { transaction.commit() } - fun keepRunnable() { + fun mainActive() { handler.removeCallbacks(hideMain) handler.postDelayed(hideMain, delayHideMain) } diff --git a/app/src/main/java/com/lizongying/mytv/MainFragment.kt b/app/src/main/java/com/lizongying/mytv/MainFragment.kt index 8c1d0b1..b982bcc 100644 --- a/app/src/main/java/com/lizongying/mytv/MainFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/MainFragment.kt @@ -84,6 +84,19 @@ class MainFragment : Fragment(), CardAdapter.ItemListener { itemBinding.rowItems.layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) + itemBinding.rowItems.addOnScrollListener(object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { +// super.onScrolled(recyclerView, dx, dy) +// val layoutManager = recyclerView.layoutManager as LinearLayoutManager +// val firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition() +// val firstVisibleViewHolder = recyclerView.findViewHolderForAdapterPosition(firstVisibleItemPosition) +// if (firstVisibleViewHolder != null && !firstVisibleViewHolder.itemView.hasFocus()) { +// firstVisibleViewHolder.itemView.requestFocus() +// } + (activity as MainActivity).mainActive() + } + }) + val layoutParams = itemBinding.row.layoutParams as ViewGroup.MarginLayoutParams layoutParams.topMargin = dpToPx(11F) itemBinding.row.layoutParams = layoutParams @@ -158,7 +171,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener { override fun onItemFocusChange(tvViewModel: TVViewModel, hasFocus: Boolean) { if (hasFocus) { tvListViewModel.setItemPositionCurrent(tvViewModel.id.value!!) - (activity as MainActivity).keepRunnable() + (activity as MainActivity).mainActive() } } diff --git a/app/src/main/java/com/lizongying/mytv/SettingFragment.kt b/app/src/main/java/com/lizongying/mytv/SettingFragment.kt index a9fa81e..87889ae 100644 --- a/app/src/main/java/com/lizongying/mytv/SettingFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/SettingFragment.kt @@ -1,11 +1,9 @@ package com.lizongying.mytv -import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.annotation.RequiresApi import androidx.fragment.app.DialogFragment import com.lizongying.mytv.databinding.DialogBinding diff --git a/app/src/main/res/layout/channel.xml b/app/src/main/res/layout/channel.xml index 47c664a..7c48bd5 100644 --- a/app/src/main/res/layout/channel.xml +++ b/app/src/main/res/layout/channel.xml @@ -13,7 +13,6 @@ android:layout_height="wrap_content" android:layout_gravity="end" android:layout_marginTop="0dp" - android:text="99" android:textColor="#FFEEEEEE" android:textStyle="bold" android:textSize="50sp" /> diff --git a/screenshots/zfb.jpg b/screenshots/zfb.jpg new file mode 100644 index 0000000..9bd8510 Binary files /dev/null and b/screenshots/zfb.jpg differ