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