Skip to content

Commit

Permalink
add time
Browse files Browse the repository at this point in the history
  • Loading branch information
lizongying committed Apr 18, 2024
1 parent 3936629 commit ca82d54
Show file tree
Hide file tree
Showing 25 changed files with 578 additions and 180 deletions.
9 changes: 9 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
## 更新日志

### v1.7.8(通用)

* 修复播放过程中的卡顿问题
* 增加时间显示
* 频道号优化
* 遥控器左键打开频道列表
* 遥控器右键打开设置菜单
* 频道列表空白处点击隐藏频道列表

### v1.7.6(通用)

* 临时去掉部分频道,提高频道的可用性
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ adb install my-tv.apk
* 频道列表优化
* epg更新后菜单更新
* 防止菜单第一个获取焦点
* 隐藏
* 亮度调节
* 音量调节

## 赞赏

Expand Down
28 changes: 18 additions & 10 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,37 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="true" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application
android:name=".MyApplication"
android:allowBackup="true"
android:largeHeap="true"
android:icon="@drawable/logo"
android:logo="@drawable/logo"
android:banner="@drawable/banner"
android:icon="@drawable/logo"
android:label="@string/app_name"
android:supportsRtl="true"
android:largeHeap="true"
android:logo="@drawable/logo"
android:networkSecurityConfig="@xml/network"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.MyTV">
android:supportsRtl="true"
android:theme="@style/Theme.MyTV"
android:usesCleartextTraffic="true">
<activity
android:keepScreenOn="true"
android:name=".MainActivity"
android:exported="true"
android:keepScreenOn="true"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<receiver
android:name=".BootReceiver"
android:exported="true">
Expand All @@ -40,15 +46,17 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name=".NetworkChangeReceiver"
<receiver
android:name=".NetworkChangeReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>

<provider
android:name=".InitializerProvider"
android:authorities="${applicationId}.InitializerProvider"
android:exported="false"/>
android:exported="false" />
</application>
</manifest>
2 changes: 1 addition & 1 deletion app/src/main/java/com/lizongying/mytv/CardAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class CardAdapter(
ImageCardView(ContextThemeWrapper(parent.context, R.style.CustomImageCardTheme)) {}
cardView.isFocusable = true
cardView.isFocusableInTouchMode = true
cardView.updatePadding(1, 1, 1, 1)
cardView.updatePadding(1, 0, 1, 0)
return ViewHolder(cardView)
}

Expand Down
5 changes: 4 additions & 1 deletion app/src/main/java/com/lizongying/mytv/ChannelFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class ChannelFragment : Fragment() {
): View {
_binding = ChannelBinding.inflate(inflater, container, false)
_binding!!.root.visibility = View.GONE
(activity as MainActivity).fragmentReady()
(activity as MainActivity).fragmentReady("ChannelFragment")
return binding.root
}

Expand All @@ -36,6 +36,9 @@ class ChannelFragment : Fragment() {
}

fun show(channel: String) {
if (binding.channelContent.text.length > 1) {
return
}
this.channel = "${binding.channelContent.text}$channel".toInt()
handler.removeCallbacks(hideRunnable)
handler.removeCallbacks(playRunnable)
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/lizongying/mytv/InfoFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class InfoFragment : Fragment() {
): View {
_binding = InfoBinding.inflate(inflater, container, false)
_binding!!.root.visibility = View.GONE
(activity as MainActivity).fragmentReady()
(activity as MainActivity).fragmentReady("InfoFragment")
return binding.root
}

Expand Down
61 changes: 35 additions & 26 deletions app/src/main/java/com/lizongying/mytv/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import android.util.Log
import android.view.GestureDetector
import android.view.KeyEvent
import android.view.MotionEvent
import android.view.View
import android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
import android.view.WindowManager
import android.widget.Toast
Expand All @@ -31,6 +30,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
private val mainFragment = MainFragment()
private val infoFragment = InfoFragment()
private val channelFragment = ChannelFragment()
private var timeFragment = TimeFragment()
private val settingFragment = SettingFragment()

private var doubleBackToExitPressedOnce = false
Expand Down Expand Up @@ -66,6 +66,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.add(R.id.main_browse_fragment, playerFragment)
.add(R.id.main_browse_fragment, timeFragment)
.add(R.id.main_browse_fragment, infoFragment)
.add(R.id.main_browse_fragment, channelFragment)
.add(R.id.main_browse_fragment, mainFragment)
Expand Down Expand Up @@ -163,6 +164,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
fun settingDelayHide() {
handler.removeCallbacks(hideSetting)
handler.postDelayed(hideSetting, delayHideSetting)
showTime()
}

fun settingNeverHide() {
Expand All @@ -187,11 +189,21 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
}
}

fun fragmentReady() {
fun fragmentReady(tag: String) {
ready++
Log.i(TAG, "ready $ready")
if (ready == 5) {
Log.i(TAG, "ready $tag $ready ")
if (ready == 6) {
mainFragment.fragmentReady()
showTime()
}
}

private fun showTime() {
Log.i(TAG, "showTime ${SP.time}")
if (SP.time) {
timeFragment.show()
} else {
timeFragment.hide()
}
}

Expand Down Expand Up @@ -266,9 +278,14 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
private val hideSetting = Runnable {
if (settingFragment.isVisible) {
settingFragment.dismiss()
showTime()
}
}

private fun hideSettingFragment() {
handler.postDelayed(hideSetting, 0)
}

private fun channelUp() {
if (mainFragment.isHidden) {
if (SP.channelReversal) {
Expand Down Expand Up @@ -308,6 +325,11 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
return
}

if (!settingFragment.isHidden) {
hideSettingFragment()
return
}

if (doubleBackToExitPressedOnce) {
super.onBackPressed()
return
Expand Down Expand Up @@ -435,30 +457,17 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
}

KeyEvent.KEYCODE_DPAD_LEFT -> {
channelUp()
// if (mainFragment.isHidden) {
// prevSource()
// } else {
//// if (mainFragment.tvListViewModel.getTVViewModelCurrent()
//// ?.getItemPosition() == 0
//// ) {
////// mainFragment.toLastPosition()
//// hideMainFragment()
//// }
// }
if (mainFragment.isHidden && !settingFragment.isVisible) {
switchMainFragment()
return true
}
}

KeyEvent.KEYCODE_DPAD_RIGHT -> {
channelDown()
// if (mainFragment.isHidden) {
// nextSource()
// } else {
//// if (mainFragment.tvListViewModel.getTVViewModelCurrent()
//// ?.getItemPosition() == mainFragment.tvListViewModel.maxNum[mainFragment.selectedPosition] - 1
//// ) {
//// mainFragment.toFirstPosition()
//// }
// }
if (mainFragment.isHidden && !settingFragment.isVisible) {
showSetting()
return true
}
}
}
return false
Expand Down Expand Up @@ -499,7 +508,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
}

override fun onRequestFinished(message: String?) {
fragmentReady()
fragmentReady("request")
}

private companion object {
Expand Down
26 changes: 20 additions & 6 deletions app/src/main/java/com/lizongying/mytv/MainFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.lizongying.mytv.Utils.dpToPx
import com.lizongying.mytv.api.YSP
import com.lizongying.mytv.databinding.MenuBinding
import com.lizongying.mytv.databinding.RowBinding
import com.lizongying.mytv.databinding.ShowBinding
import com.lizongying.mytv.models.ProgramType
import com.lizongying.mytv.models.TVListViewModel
import com.lizongying.mytv.models.TVViewModel
Expand All @@ -29,7 +29,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {

private var rowList: MutableList<View> = mutableListOf()

private var _binding: ShowBinding? = null
private var _binding: MenuBinding? = null
private val binding get() = _binding!!

var tvListViewModel = TVListViewModel()
Expand All @@ -40,10 +40,21 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = ShowBinding.inflate(inflater, container, false)
_binding = MenuBinding.inflate(inflater, container, false)

binding.menu.setOnClickListener {
hideSelf()
}

return binding.root
}

private fun hideSelf() {
requireActivity().supportFragmentManager.beginTransaction()
.hide(this)
.commit()
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

Expand Down Expand Up @@ -108,6 +119,9 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
val layoutParams = itemBinding.row.layoutParams as ViewGroup.MarginLayoutParams
layoutParams.topMargin = dpToPx(11F)
itemBinding.row.layoutParams = layoutParams
itemBinding.row.setOnClickListener{
hideSelf()
}
content.addView(itemBinding.row)

idx++
Expand Down Expand Up @@ -164,7 +178,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
}
}
}
(activity as MainActivity).fragmentReady()
(activity as MainActivity).fragmentReady("MainFragment")
}
}

Expand Down Expand Up @@ -219,8 +233,8 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
}

fun setPosition() {
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition)
val rowPosition = tvViewModel!!.getRowPosition()
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition) ?: return
val rowPosition = tvViewModel.getRowPosition()
val itemPosition = tvViewModel.getItemPosition()
setPosition(rowPosition, itemPosition)
}
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/java/com/lizongying/mytv/MyApplication.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.lizongying.mytv

import android.app.Application

class MyApplication : Application() {
}
2 changes: 1 addition & 1 deletion app/src/main/java/com/lizongying/mytv/PlayerFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class PlayerFragment : Fragment(), SurfaceHolder.Callback {
})
}
})
(activity as MainActivity).fragmentReady()
(activity as MainActivity).fragmentReady("PlayerFragment")
return _binding!!.root
}

Expand Down

0 comments on commit ca82d54

Please sign in to comment.