diff --git a/app/src/main/java/com/lizongying/mytv/MainActivity.kt b/app/src/main/java/com/lizongying/mytv/MainActivity.kt
index e766306..4745bd8 100644
--- a/app/src/main/java/com/lizongying/mytv/MainActivity.kt
+++ b/app/src/main/java/com/lizongying/mytv/MainActivity.kt
@@ -47,6 +47,7 @@ class MainActivity : FragmentActivity() {
private var channelReversal = false
private var channelNum = true
private var bootStartup = true
+ private var selectedProvince = "湖南"
private var versionName = ""
@@ -84,9 +85,10 @@ class MainActivity : FragmentActivity() {
channelReversal = sharedPref.getBoolean(CHANNEL_REVERSAL, channelReversal)
channelNum = sharedPref.getBoolean(CHANNEL_NUM, channelNum)
bootStartup = sharedPref.getBoolean(BOOT_STARTUP, bootStartup)
+ selectedProvince = sharedPref.getString(SELECTED_PROVINCE, selectedProvince)
versionName = getPackageInfo().versionName
- settingFragment = SettingFragment(versionName, channelReversal, channelNum, bootStartup)
+ settingFragment = SettingFragment(versionName, channelReversal, channelNum, bootStartup, selectedProvince)
}
fun showInfoFragment(tvViewModel: TVViewModel) {
@@ -247,6 +249,14 @@ class MainActivity : FragmentActivity() {
this.bootStartup = bootStartup
}
+ fun saveSelectedProvince(selectedProvince: Sring) {
+ with(sharedPref.edit()) {
+ putString(SELECTED_PROVINCE, selectedProvince)
+ apply()
+ }
+ this.selectedProvince = selectedProvince
+ }
+
private fun showSetting() {
if (!mainFragment.isHidden) {
return
@@ -536,5 +546,6 @@ class MainActivity : FragmentActivity() {
private const val CHANNEL_REVERSAL = "channel_reversal"
private const val CHANNEL_NUM = "channel_num"
const val BOOT_STARTUP = "boot_startup"
+ const val SELECTED_PROVINCE = "selected_province"
}
}
diff --git a/app/src/main/java/com/lizongying/mytv/SettingFragment.kt b/app/src/main/java/com/lizongying/mytv/SettingFragment.kt
index 8a55c50..3286488 100644
--- a/app/src/main/java/com/lizongying/mytv/SettingFragment.kt
+++ b/app/src/main/java/com/lizongying/mytv/SettingFragment.kt
@@ -4,6 +4,8 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
+import android.widget.ArrayAdapter
import androidx.fragment.app.DialogFragment
import com.lizongying.mytv.databinding.DialogBinding
@@ -12,6 +14,7 @@ class SettingFragment(private val versionName: String,
private val channelReversal: Boolean,
private val channelNum: Boolean,
private val bootStartup: Boolean,
+ private val selectedProvince: String,
) :
DialogFragment() {
@@ -50,12 +53,37 @@ class SettingFragment(private val versionName: String,
(activity as MainActivity).saveBootStartup(isChecked)
}
+ // 设置省份Spinner
+ val provinceSpinner = binding.provinceSpinner
+ val provinces = arrayOf("北京", "上海", "天津", "重庆", "河北", "山西", "内蒙古", "辽宁", "吉林", "黑龙江", "江苏", "浙江", "安徽", "福建", "江西", "山东", "河南", "湖北", "湖南", "广东", "广西", "海南", "四川", "贵州", "云南", "西藏", "陕西", "甘肃", "青海", "宁夏", "新疆", "台湾", "香港", "澳门")
+ val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_dropdown_item, provinces)
+ provinceSpinner.adapter = adapter
+
+ // 设置默认选择为“湖南”
+ val defaultIndex = provinces.indexOf("湖南")
+ if (defaultIndex != -1) {
+ provinceSpinner.setSelection(defaultIndex)
+ }
+
+ // 设置Spinner的监听器
+ provinceSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
+ override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
+ selectedProvince = provinces[position]
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
+ selectedProvince = null
+ }
+ }
+
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
+ // 取消Spinner的监听器(看是否需要吧)
+ binding.provinceSpinner.onItemSelectedListener = null
}
companion object {
diff --git a/app/src/main/java/com/lizongying/mytv/TVList.kt b/app/src/main/java/com/lizongying/mytv/TVList.kt
index 6eeb17a..0de4f3b 100644
--- a/app/src/main/java/com/lizongying/mytv/TVList.kt
+++ b/app/src/main/java/com/lizongying/mytv/TVList.kt
@@ -990,8 +990,19 @@ object TVList {
//获取本地频道
ChannelUtils.getLocalChannel(context)
}
+ //获取定义的省份数据
+ val sp = context.getSharedPreferences("MainActivity", Context.MODE_PRIVATE)
//按频道分类
for (tv in tvList) {
+
+ // 如果是本地频道,则判断频道名称是否包含设置的省份,默认设置为湖南省,可遥控呼出菜单修改
+ if ( tv.channel == "本地频道" ) {
+ if ( !tv.title.contains(sp.getString(MainActivity.SELECTED_PROVINCE, "湖南")) ) {
+ Log.i("TVList", "跳过频道:${tv.title}")
+ continue;
+ }
+ }
+
val key = tv.channel
if (channelTVMap.containsKey(key)) {
val list = channelTVMap[key]!!
diff --git a/app/src/main/res/layout/dialog.xml b/app/src/main/res/layout/dialog.xml
index 819e99d..75115bc 100644
--- a/app/src/main/res/layout/dialog.xml
+++ b/app/src/main/res/layout/dialog.xml
@@ -46,6 +46,11 @@
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
+
换台反转
数字选台
开机自启
+ 请选择您的省份
\ No newline at end of file