diff --git a/app/build.gradle b/app/build.gradle index cdf217ff7..d10eea404 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 21 targetSdk 28 versionCode 231 - versionName "2.3.1" + versionName "0329" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 2cd3a33b2..1bad08d74 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -482,11 +482,12 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen if (Setting.getHomeMenuKey() == 0) MenuDialog.create(this).show(); else if (Setting.getHomeMenuKey() == 1) SiteDialog.create(this).show(); else if (Setting.getHomeMenuKey() == 2) HistoryDialog.create(this).type(0).show(); - else if (Setting.getHomeMenuKey() == 3) HistoryActivity.start(this); - else if (Setting.getHomeMenuKey() == 4) SearchActivity.start(this); - else if (Setting.getHomeMenuKey() == 5) PushActivity.start(this); - else if (Setting.getHomeMenuKey() == 6) KeepActivity.start(this); - else if (Setting.getHomeMenuKey() == 7) SettingActivity.start(this); + else if (Setting.getHomeMenuKey() == 3) LiveActivity.start(this); + else if (Setting.getHomeMenuKey() == 4) HistoryActivity.start(this); + else if (Setting.getHomeMenuKey() == 5) SearchActivity.start(this); + else if (Setting.getHomeMenuKey() == 6) PushActivity.start(this); + else if (Setting.getHomeMenuKey() == 7) KeepActivity.start(this); + else if (Setting.getHomeMenuKey() == 8) SettingActivity.start(this); } if (!isHomeFragment && KeyUtil.isMenuKey(event)) updateFilter((Class) mAdapter.get(mBinding.pager.getCurrentItem())); if (!isHomeFragment && KeyUtil.isBackKey(event) && event.isLongPress() && getFragment().goRoot()) setCoolDown(); @@ -563,7 +564,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen public Fragment getItem(int position) { if (position == 0) return new HomeFragment(); Class type = (Class) mAdapter.get(position); - return VodFragment.newInstance(getHome().getKey(), type.getTypeId(), type.getStyle(), type.getExtend(false), type.getTypeFlag().equals("1")); + return VodFragment.newInstance(getHome().getKey(), type.getTypeId(), type.getStyle(), type.getExtend(false), "1".equals(type.getTypeFlag())); } @Override @@ -575,4 +576,4 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { } } -} \ No newline at end of file +} diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java index b61615237..7f5a5bfe6 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java @@ -13,6 +13,7 @@ import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.dialog.ButtonsDialog; import com.fongmi.android.tv.ui.dialog.DisplayDialog; +import com.fongmi.android.tv.ui.dialog.MenuKeyDialog; import com.fongmi.android.tv.utils.ResUtil; import java.util.Locale; @@ -25,7 +26,6 @@ public class SettingCustomActivity extends BaseActivity { private String[] episode; private String[] fullscreenMenuKey; private String[] smallWindowBackKey; - private String[] homeMenuKey; private String[] homeUI; @Override @@ -52,7 +52,7 @@ public class SettingCustomActivity extends BaseActivity { mBinding.homeSiteLockText.setText(getSwitch(Setting.isHomeSiteLock())); mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); mBinding.smallWindowBackKeyText.setText((smallWindowBackKey = ResUtil.getStringArray(R.array.select_small_window_back_key))[Setting.getSmallWindowBackKey()]); - mBinding.homeMenuKeyText.setText((homeMenuKey = ResUtil.getStringArray(R.array.select_home_menu_key))[Setting.getHomeMenuKey()]); + mBinding.homeMenuKeyText.setText((ResUtil.getStringArray(R.array.select_home_menu_key))[Setting.getHomeMenuKey()]); mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch())); mBinding.homeUIText.setText((homeUI = ResUtil.getStringArray(R.array.select_home_ui))[Setting.getHomeUI()]); mBinding.homeHistoryText.setText(getSwitch(Setting.isHomeHistory())); @@ -70,7 +70,7 @@ public class SettingCustomActivity extends BaseActivity { mBinding.homeSiteLock.setOnClickListener(this::setHomeSiteLock); mBinding.incognito.setOnClickListener(this::setIncognito); mBinding.smallWindowBackKey.setOnClickListener(this::setSmallWindowBackKey); - mBinding.homeMenuKey.setOnClickListener(this::setHomeMenuKey); + mBinding.homeMenuKey.setOnClickListener(this::onHomeMenuKey); mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch); mBinding.homeUI.setOnClickListener(this::setHomeUI); mBinding.homeButtons.setOnClickListener(this::onHomeButtons); @@ -141,10 +141,12 @@ public class SettingCustomActivity extends BaseActivity { mBinding.smallWindowBackKeyText.setText(smallWindowBackKey[index]); } - private void setHomeMenuKey(View view) { - int index = Setting.getHomeMenuKey(); - Setting.putHomeMenuKey(index = index == homeMenuKey.length - 1 ? 0 : ++index); - mBinding.homeMenuKeyText.setText(homeMenuKey[index]); + private void onHomeMenuKey(View view) { + MenuKeyDialog.create(this).show(); + } + + public void setHomeMenuText() { + mBinding.homeMenuKeyText.setText((ResUtil.getStringArray(R.array.select_home_menu_key))[Setting.getHomeMenuKey()]); } private void setAggregatedSearch(View view) { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index e3c08e1f5..109c28f17 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1700,6 +1700,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Override public void onKeyDown() { + showInfo(); showControl(getFocus2()); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java index 2635b81d3..038e307f0 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java @@ -12,6 +12,7 @@ import com.fongmi.android.tv.databinding.DialogMenuBinding; import com.fongmi.android.tv.ui.activity.HistoryActivity; import com.fongmi.android.tv.ui.activity.HomeActivity; import com.fongmi.android.tv.ui.activity.KeepActivity; +import com.fongmi.android.tv.ui.activity.LiveActivity; import com.fongmi.android.tv.ui.activity.PushActivity; import com.fongmi.android.tv.ui.activity.SearchActivity; import com.fongmi.android.tv.ui.activity.SettingActivity; @@ -78,11 +79,12 @@ public class MenuDialog implements MenuAdapter.OnClickListener { if (dialog != null) dialog.dismiss(); if (position == 0 && activity instanceof HomeActivity) SiteDialog.create(activity).show(); else if (position == 1 && activity instanceof HomeActivity) HistoryDialog.create(activity).type(0).show(); - else if (position == 2) HistoryActivity.start(activity); - else if (position == 3) SearchActivity.start(activity); - else if (position == 4) PushActivity.start(activity); - else if (position == 5) KeepActivity.start(activity); - else if (position == 6) SettingActivity.start(activity); + else if (position == 2) LiveActivity.start(activity); + else if (position == 3) HistoryActivity.start(activity); + else if (position == 4) SearchActivity.start(activity); + else if (position == 5) PushActivity.start(activity); + else if (position == 6) KeepActivity.start(activity); + else if (position == 7) SettingActivity.start(activity); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuKeyDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuKeyDialog.java new file mode 100644 index 000000000..dff4c9537 --- /dev/null +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuKeyDialog.java @@ -0,0 +1,78 @@ +package com.fongmi.android.tv.ui.dialog; + +import android.app.Activity; +import android.view.LayoutInflater; +import android.view.WindowManager; + +import androidx.appcompat.app.AlertDialog; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; +import com.fongmi.android.tv.databinding.DialogMenuBinding; +import com.fongmi.android.tv.ui.activity.SettingCustomActivity; +import com.fongmi.android.tv.ui.adapter.MenuAdapter; +import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; +import com.fongmi.android.tv.utils.ResUtil; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class MenuKeyDialog implements MenuAdapter.OnClickListener { + private final DialogMenuBinding binding; + private final MenuAdapter adapter; + private final AlertDialog dialog; + + private final Activity activity; + + + public static MenuKeyDialog create(Activity activity) { + return new MenuKeyDialog(activity); + } + + public MenuKeyDialog(Activity activity) { + String[] items = ResUtil.getStringArray(R.array.select_home_menu_key); + List mItems = new ArrayList<>(Arrays.asList(items)); + this.adapter = new MenuAdapter(this, mItems); + this.activity = activity; + this.binding = DialogMenuBinding.inflate(LayoutInflater.from(activity)); + this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); + } + + public void show() { + initView(); + } + + private void initView() { + setRecyclerView(); + setDialog(); + } + + private void setRecyclerView() { + binding.recycler.setAdapter(adapter); + binding.recycler.setHasFixedSize(true); + binding.recycler.setItemAnimator(null); + binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16)); + binding.recycler.setLayoutManager(new GridLayoutManager(dialog.getContext(), 1)); + binding.recycler.post(() -> binding.recycler.scrollToPosition(Setting.getHomeMenuKey())); + + } + + private void setDialog() { + WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); + params.width = (int) (ResUtil.getScreenWidth() * 0.4f); + dialog.getWindow().setAttributes(params); + dialog.getWindow().setDimAmount(0); + dialog.show(); + } + + @Override + public void onItemClick(int position) { + if (dialog != null) dialog.dismiss(); + Setting.putHomeMenuKey(position); + ((SettingCustomActivity) activity).setHomeMenuText(); + } + +} diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java index 573a2d9b3..84511f4a4 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java @@ -35,7 +35,7 @@ public class LiveParser { if (live.getGroups().size() > 0) return; if (live.getType() == 0) text(live, getText(live.getUrl())); if (live.getType() == 1) json(live, getText(live.getUrl())); - if (live.getType() == 2) proxy(live, getText(UrlUtil.convert(live.getUrl()))); + if (live.getType() == 2) proxy(live, getText(live.getUrl())); } public static void text(Live live, String text) { diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Device.java b/app/src/main/java/com/fongmi/android/tv/bean/Device.java index b559734c5..f56bc8d8e 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Device.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Device.java @@ -34,7 +34,7 @@ public class Device { public static Device get() { Device device = new Device(); - device.setUuid(Util.getDeviceId()); + device.setUuid(Util.getAndroidId()); device.setName(Util.getDeviceName()); device.setIp(Server.get().getAddress()); device.setType(Product.getDeviceType()); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Util.java b/app/src/main/java/com/fongmi/android/tv/utils/Util.java index 2478fc65b..848740a90 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Util.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Util.java @@ -14,6 +14,7 @@ import android.os.Build; import android.os.IBinder; import android.os.Parcelable; import android.provider.Settings; +import android.text.TextUtils; import android.view.View; import android.view.Window; import android.view.WindowManager; @@ -83,8 +84,14 @@ public class Util { } } - public static String getDeviceId() { - return Settings.Secure.getString(Init.context().getContentResolver(), Settings.Secure.ANDROID_ID); + public static String getAndroidId() { + try { + String id = Settings.Secure.getString(Init.context().getContentResolver(), Settings.Secure.ANDROID_ID); + if (TextUtils.isEmpty(id)) throw new NullPointerException(); + return id; + } catch (Exception e) { + return "0200000000000000"; + } } public static String getDeviceName() { diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index b558e9b93..0fd8a086c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -244,6 +244,7 @@ 选项弹窗 切换站源 切换线路 + 直播页面 历史页面 搜索页面 推送页面 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a2601fcff..b780e91cd 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -244,6 +244,7 @@ 選項彈窗 切換站源 切換線路 + 直播页面 歷史頁面 搜索頁面 推送頁面 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 83635b38e..ab9fafbd4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -244,6 +244,7 @@ Select dialog Change site Change config + Live page History page Search page Push page