From 110f11db8315e346c99e1d11e1b46936b472f9c4 Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 30 Jan 2023 15:49:44 +0800 Subject: [PATCH] Fix build for mobile --- .../tv/ui/activity/DetailActivity.java | 39 +++++++++--------- .../android/tv/ui/activity/LiveActivity.java | 8 +++- .../android/tv/ui/adapter/TrackAdapter.java | 0 .../tv/ui/custom/dialog/TrackDialog.java} | 18 ++++---- .../res/layout/adapter_track.xml | 0 .../com/fongmi/android/tv/bean/History.java | 11 ++--- .../fongmi/android/tv/event/ErrorEvent.java | 7 +++- .../android/tv/ui/activity/BaseActivity.java | 6 --- .../com/fongmi/android/tv/utils/ImgUtil.java | 4 +- .../main/res/drawable-hdpi/ic_img_empty.png | Bin 0 -> 1790 bytes .../main/res/drawable-mdpi/ic_img_empty.png | Bin 0 -> 1411 bytes .../main/res/drawable-xhdpi/ic_img_empty.png | Bin 0 -> 2249 bytes .../main/res/drawable-xxhdpi/ic_img_empty.png | Bin 0 -> 3383 bytes .../res/layout/view_control_seek.xml | 0 app/src/main/res/values-zh-rCN/strings.xml | 5 +-- app/src/main/res/values-zh-rTW/strings.xml | 5 +-- app/src/main/res/values/strings.xml | 5 +-- 17 files changed, 51 insertions(+), 57 deletions(-) rename app/src/{main => leanback}/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java (100%) rename app/src/{main/java/com/fongmi/android/tv/ui/custom/TrackSelectionDialog.java => leanback/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java} (87%) rename app/src/{main => leanback}/res/layout/adapter_track.xml (100%) create mode 100644 app/src/main/res/drawable-hdpi/ic_img_empty.png create mode 100644 app/src/main/res/drawable-mdpi/ic_img_empty.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_img_empty.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_img_empty.png rename app/src/{leanback => main}/res/layout/view_control_seek.xml (100%) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 4a420cf20..dbefba8b8 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -42,8 +42,8 @@ import com.fongmi.android.tv.net.OkHttp; import com.fongmi.android.tv.player.ExoUtil; import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.ui.custom.CustomKeyDownVod; -import com.fongmi.android.tv.ui.custom.TrackSelectionDialog; import com.fongmi.android.tv.ui.custom.dialog.DescDialog; +import com.fongmi.android.tv.ui.custom.dialog.TrackDialog; import com.fongmi.android.tv.ui.presenter.ArrayPresenter; import com.fongmi.android.tv.ui.presenter.EpisodePresenter; import com.fongmi.android.tv.ui.presenter.FlagPresenter; @@ -76,7 +76,7 @@ import okhttp3.Call; import okhttp3.Response; import tv.danmaku.ijk.media.player.ui.IjkVideoView; -public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackSelectionDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback { +public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback { private ActivityDetailBinding mBinding; private ViewGroup.LayoutParams mFrameParams; @@ -350,8 +350,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mFlagAdapter.setItems(item.getVodFlags(), null); mBinding.content.setMaxLines(getMaxLines()); mBinding.video.requestFocus(); - if (hasFlag()) checkHistory(); getPart(item.getVodName()); + checkFlag(item); checkKeep(); } @@ -585,7 +585,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private void onTrack(View view) { int type = Integer.parseInt(view.getTag().toString()); - TrackSelectionDialog.create(this).player(mPlayers).type(type).listener(this).show(); + TrackDialog.create(this).player(mPlayers).type(type).listener(this).show(); hideControl(); } @@ -668,18 +668,15 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis }); } - private boolean hasFlag() { - mBinding.flag.setVisibility(mFlagAdapter.size() > 0 ? View.VISIBLE : View.GONE); - if (mFlagAdapter.size() > 0) return true; - Notify.show(R.string.error_episode); - initSearch(getName(), true); - hideProgress(); - return false; + private void checkFlag(Vod item) { + mBinding.flag.setVisibility(item.getVodFlags().isEmpty() ? View.GONE : View.VISIBLE); + if (isVisible(mBinding.flag)) checkHistory(item); + else ErrorEvent.episode(); } - private void checkHistory() { + private void checkHistory(Vod item) { mHistory = History.find(getHistoryKey()); - mHistory = mHistory == null ? createHistory() : mHistory; + mHistory = mHistory == null ? createHistory(item) : mHistory; setFlagActivated(mHistory.getFlag()); if (mHistory.isRevSort()) reverseEpisode(); setScale(mHistory.getScale() == -1 ? Prefers.getScale() : mHistory.getScale()); @@ -691,13 +688,13 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis setDecodeView(); } - private History createHistory() { + private History createHistory(Vod item) { History history = new History(); history.setKey(getHistoryKey()); history.setCid(ApiConfig.getCid()); - history.setVodPic(mBinding.video.getTag().toString()); - history.setVodName(mBinding.name.getText().toString()); - history.findEpisode(mFlagAdapter); + history.setVodPic(item.getVodPic()); + history.setVodName(item.getVodName()); + history.findEpisode(item.getVodFlags()); return history; } @@ -920,11 +917,11 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis this.mInitTrack = initTrack; } - public boolean isInitAuto() { + private boolean isInitAuto() { return mInitAuto; } - public void setInitAuto(boolean initAuto) { + private void setInitAuto(boolean initAuto) { this.mInitAuto = initAuto; } @@ -936,6 +933,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis this.mAutoMode = autoMode; } + private void notifyItemChanged(RecyclerView view, ArrayObjectAdapter adapter) { + if (!view.isComputingLayout()) adapter.notifyArrayItemRangeChanged(0, adapter.size()); + } + @Override public boolean dispatchKeyEvent(KeyEvent event) { if (isFullscreen() && Utils.isMenuKey(event)) onToggle(); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index ad4064678..5d6d24ca3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -38,9 +38,9 @@ import com.fongmi.android.tv.player.source.TVBus; import com.fongmi.android.tv.player.source.ZLive; import com.fongmi.android.tv.ui.custom.CustomKeyDownLive; import com.fongmi.android.tv.ui.custom.CustomLiveListView; -import com.fongmi.android.tv.ui.custom.TrackSelectionDialog; import com.fongmi.android.tv.ui.custom.dialog.LiveDialog; import com.fongmi.android.tv.ui.custom.dialog.PassDialog; +import com.fongmi.android.tv.ui.custom.dialog.TrackDialog; import com.fongmi.android.tv.ui.presenter.ChannelPresenter; import com.fongmi.android.tv.ui.presenter.GroupPresenter; import com.fongmi.android.tv.utils.Clock; @@ -322,7 +322,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void onTrack(View view) { int type = Integer.parseInt(view.getTag().toString()); - TrackSelectionDialog.create(this).player(mPlayers).type(type).show(); + TrackDialog.create(this).player(mPlayers).type(type).show(); hideControl(); } @@ -492,6 +492,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick getUrl(); } + private void notifyItemChanged(RecyclerView view, ArrayObjectAdapter adapter) { + if (!view.isComputingLayout()) adapter.notifyArrayItemRangeChanged(0, adapter.size()); + } + @Override public boolean nextGroup(boolean skip) { int position = mBinding.group.getSelectedPosition() + 1; diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java similarity index 100% rename from app/src/main/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java rename to app/src/leanback/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/TrackSelectionDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java similarity index 87% rename from app/src/main/java/com/fongmi/android/tv/ui/custom/TrackSelectionDialog.java rename to app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java index 282a9ac67..0e77b2924 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/TrackSelectionDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java @@ -1,4 +1,4 @@ -package com.fongmi.android.tv.ui.custom; +package com.fongmi.android.tv.ui.custom.dialog; import android.app.Activity; import android.view.LayoutInflater; @@ -10,6 +10,8 @@ import com.fongmi.android.tv.bean.Track; import com.fongmi.android.tv.databinding.DialogTrackBinding; import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.ui.adapter.TrackAdapter; +import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; +import com.fongmi.android.tv.ui.custom.TrackNameProvider; import com.fongmi.android.tv.utils.ResUtil; import com.google.android.exoplayer2.Tracks; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -19,7 +21,7 @@ import java.util.List; import tv.danmaku.ijk.media.player.misc.IjkTrackInfo; -public final class TrackSelectionDialog implements TrackAdapter.OnClickListener { +public final class TrackDialog implements TrackAdapter.OnClickListener { private final DialogTrackBinding binding; private final TrackNameProvider provider; @@ -29,28 +31,28 @@ public final class TrackSelectionDialog implements TrackAdapter.OnClickListener private Players player; private int type; - public static TrackSelectionDialog create(Activity activity) { - return new TrackSelectionDialog(activity); + public static TrackDialog create(Activity activity) { + return new TrackDialog(activity); } - public TrackSelectionDialog(Activity activity) { + public TrackDialog(Activity activity) { this.binding = DialogTrackBinding.inflate(LayoutInflater.from(activity)); this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); this.adapter = new TrackAdapter(this); this.provider = new TrackNameProvider(); } - public TrackSelectionDialog type(int type) { + public TrackDialog type(int type) { this.type = type; return this; } - public TrackSelectionDialog player(Players player) { + public TrackDialog player(Players player) { this.player = player; return this; } - public TrackSelectionDialog listener(Listener listener) { + public TrackDialog listener(Listener listener) { this.listener = listener; return this; } diff --git a/app/src/main/res/layout/adapter_track.xml b/app/src/leanback/res/layout/adapter_track.xml similarity index 100% rename from app/src/main/res/layout/adapter_track.xml rename to app/src/leanback/res/layout/adapter_track.xml diff --git a/app/src/main/java/com/fongmi/android/tv/bean/History.java b/app/src/main/java/com/fongmi/android/tv/bean/History.java index 78b1f525c..06a5a4b7b 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/History.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/History.java @@ -1,7 +1,6 @@ package com.fongmi.android.tv.bean; import androidx.annotation.NonNull; -import androidx.leanback.widget.ArrayObjectAdapter; import androidx.room.Entity; import androidx.room.PrimaryKey; @@ -238,14 +237,12 @@ public class History { return this; } - public void findEpisode(ArrayObjectAdapter adapter) { - Vod.Flag flag = (Vod.Flag) adapter.get(0); - setVodFlag(flag.getFlag()); - setVodRemarks(flag.getEpisodes().get(0).getName()); + public void findEpisode(List flags) { + setVodFlag(flags.get(0).getFlag()); + setVodRemarks(flags.get(0).getEpisodes().get(0).getName()); for (History item : AppDatabase.get().getHistoryDao().findByName(ApiConfig.getCid(), getVodName())) { if (getPosition() > 0) break; - for (int i = 0; i < adapter.size(); i++) { - flag = (Vod.Flag) adapter.get(i); + for (Vod.Flag flag : flags) { Vod.Flag.Episode episode = flag.find(item.getVodRemarks()); if (episode == null) continue; setVodFlag(flag.getFlag()); diff --git a/app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java b/app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java index 9fe458795..18dab2acd 100644 --- a/app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java +++ b/app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java @@ -22,6 +22,10 @@ public class ErrorEvent { EventBus.getDefault().post(new ErrorEvent(Type.FORMAT, true)); } + public static void episode() { + EventBus.getDefault().post(new ErrorEvent(Type.EPISODE, false)); + } + public static void timeout() { EventBus.getDefault().post(new ErrorEvent(Type.TIMEOUT, false)); } @@ -35,6 +39,7 @@ public class ErrorEvent { if (type == Type.URL) return R.string.error_play_url; if (type == Type.PARSE) return R.string.error_play_parse; if (type == Type.FORMAT) return R.string.error_play_format; + if (type == Type.EPISODE) return R.string.error_play_episode; if (type == Type.TIMEOUT) return R.string.error_play_timeout; return -1; } @@ -56,6 +61,6 @@ public class ErrorEvent { } public enum Type { - URL, PARSE, FORMAT, TIMEOUT + URL, PARSE, FORMAT, EPISODE, TIMEOUT } } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java index cff19b313..eb34d06e8 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java @@ -8,8 +8,6 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; -import androidx.leanback.widget.ArrayObjectAdapter; -import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.R; @@ -53,10 +51,6 @@ public abstract class BaseActivity extends AppCompatActivity { protected void initEvent() { } - protected void notifyItemChanged(RecyclerView view, ArrayObjectAdapter adapter) { - if (!view.isComputingLayout()) adapter.notifyArrayItemRangeChanged(0, adapter.size()); - } - private void setWall() { try { File file = FileUtil.getWall(Prefers.getWall()); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java index 55e68732c..8b25eb901 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java @@ -40,8 +40,8 @@ public class ImgUtil { public static void loadLive(String url, ImageView view) { view.setVisibility(TextUtils.isEmpty(url) ? View.GONE : View.VISIBLE); - if (TextUtils.isEmpty(url)) view.setImageResource(R.drawable.ic_live); - else Glide.with(App.get()).asBitmap().load(url).skipMemoryCache(true).dontAnimate().signature(new ObjectKey(url)).error(R.drawable.ic_live).into(view); + if (TextUtils.isEmpty(url)) view.setImageResource(R.drawable.ic_img_empty); + else Glide.with(App.get()).asBitmap().load(url).skipMemoryCache(true).dontAnimate().signature(new ObjectKey(url)).error(R.drawable.ic_img_empty).into(view); } public static GlideUrl getUrl(String url) { diff --git a/app/src/main/res/drawable-hdpi/ic_img_empty.png b/app/src/main/res/drawable-hdpi/ic_img_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..f6e474d98505f92124a7813318b61b8cfdd878f4 GIT binary patch literal 1790 zcmVPx*xJg7oRCr$Pn_X-aRTzffGqc;>Z4KR)mNo(+Xs!JFLm*ZV2^VPeLLw~?hy*SK zBv2EoU<9L9Kw3x?tdW{fg#;4RC}@l%s4ZYE6zm0Hfs!JULfif8&vv`BvpdJkYNe&y z-7~Y(?v%{j_C4SEzGuEU=RGr90^^EGfEawD6EFb9=nw;t0Vuvj#ONTSgNzP}kAT_^ zqLi8(4u_TJd2UcMNO15_C?sWOX8H*s!APm}TZ23vk39tLJrGg=O059yX+QuZ5aI`= zU-206PFfmi>kX<8AeX1T7{EFTq$T*qCTjXN5R_%uQ@8Xa5C+uH&|pc+7*!77l|*Hx zr+GP!9B{R^yqc4fBZL99x;%v($9<%yBz2HWVMbc&9^!CxGfmqHRxa*5N^ zxdo8qwa2*n6WB_ep7t{UW*T%N5Fj{1oSrr>KvE1q5eazZ4x)#pE08mh31&B#; zh~Y9oF(9j>3^wQIAd)v+qYS7!b1nRtuK~FC&c4imNU#;DjRoNSe@49dLEBVxjz0{^ zG-|js2UDI*fJmqvsn=crFI38=ZV8Ffv6z}@YE-Dby(F*A^LUlwz2N`*{-Qm;J^lkYrJY|7i=o>UJIo=MLt z3egY_)g8h&7rsVNy7O*}fS_P{0hUZ(3Nx?$=D-BV>Z(9W(scPeqZhSz~A6?fF~45pCb^F##fy5B4j0;KW-|tCGxP;d!)1(`}xDhT&A- zsE#_f+)0zOr(oNHZQwcWx|a!%oEazH#)!s+;DyG4jpBm`A(`)IZ;cpA8BS?s2~J)= z$s99pTpo(%zJVk@iFr&kAv2(G5E_Kd`5DX|$H50~gwJB3qz566SOEXXRiIq5CP{^- z0!2w>2~H`1(=++Jhvs4Z(;GB_qzsT|T><*{vD%4K*H6U_M-Ct_+>eib0$b;A zRc!%u14xFmtEv=Lja8b!=^bS5gt;i3{kp0(NmD>_k-nfWoLjOfIeZ6MF4+XiyVdEx zPP52WX`Y=h4~4S}6?c**faC(}J@xpq;R`sr9pM79Y}r`$@G?wIpBi-yU@?KJh(s8q z#!PAg=+jGOsCCwY(!OtR<;8KLeIhnaD*_+k=)r0NwF0EZOvVLBq7uq3mEpYeT+|w# z%$R{Slh(k@-8n0%F@aivQeq}m0}?_4Dy~$ZruBEGyr0U-!>Zg>VMy_qK&HtUM66~~ z6`+6=z=5j=aJpI9c04n47FOo2#O|tHahX7d`k5pwW>OU(dCfWNP-o<5fWp<}Vk%%L zM6t}IVnBN@?!kE{+q-6fPlVqlm%w$YJK^nyV%llE?@|%kL5_?F% z_uu0dTRJ3)yUk=wK%ZRNi*t_XJ}2JHMZbvl=5}3l(%oiqKtQY}FkU!4;{~4pZ>xUR zq#iRF5s*?7s1+o6P3m%X>1N@U&1647YE7V4kmTL1)6uDm$4#!OAE0{yCP|aCl@5jp)Cy9f%_P}gT}lVb1Zo8- zk!F&-`0YzNI5NgYnJ65UHsB&mv;itXMJBX41r)M6&Q`ew`?Zk15VJK?8=; zOq%(mI&UMX@|;8+RV0Mvf`%|lU?2I7Zqiw1MyIp$<(B@De{*+ zviSSuMO{H}i4N*kl)_+|$rMYs;G%dMcJLJ0YX-S2k?!%SLu>k;A! zuBd#s(%Q#7 zz$bPsq97LezcCVAKhyNG1?X()WYYE)5fIr23dz>wW25+SZyjD;?(F;b0Yc^<$xjk2 zf<-io!vYZ8fZOd>3@9rli)IJ2{pG96#YlsPNAZfw)^30SCMwg3PC literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_img_empty.png b/app/src/main/res/drawable-mdpi/ic_img_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..577822adac024eb4e17c8c07ec4892ff2572db9a GIT binary patch literal 1411 zcmV-}1$_F6P)Px)JxN4CRA@u(nOkgBRTPH*buJxRN~kqxZIu=TC7^_e0+wq6l29QHh(SpNqF^8r zH4z^4X`YBrzJSq~2xv`JozY>PprJd3o85@_S-tt<4`S zXBHm=c(^|bzf}_vT?Oc^{Gquu$EqS8X_BuF*RVsO*D&^wRVA!cqV zf{$&2&>!tL42}R=_#|>Kt$}Ks=_6L?g$NG+4CdfT{Q|-fAotR0csh36MkK*_;1z_5 zHh`7E_Z-3zApg_|kOsesVk z_q|Y82uGR@qdCxG0~8D?KxuI)Jent|%}ByRxM86W!Ag#+MZ;zo6-O(u=S&?8%dqE4 z;nPZ{VfBYe$jqJUYB4j~g)fg*VCSjW z=Sm?3Wn*5%if30~kT%Fw-Z*8Hp#^_|r=!{~qq0>*b0)$VS`Kr_OjnEeBYtc?2H8k6DGY@ap4BA)8d?@0IxeFZZ@_qLp@<_ryG`oU{s>s>OsQ1hBc`a~!&Q z$gzsZof?-n4p|`&_Wu22(zbDe=(f|k8S7&p;sSJ9A$)!A8|-iXIUzel{*55i9s&!; z8+t-{ZWkm^dfu2aET6c%PseryxNe(oaiIA?jBOlMFc1kw5cCCmH}9lH-#SrKG|U}6 z7ptbc30=8fog4wSG;GGfmV=10`zm6D3?dcL?6>u0Wq1d0I&nn7%Dtj4}8 z`;y-|2Eu_bI@>!lW2YN^;OJWByF>!aXad-)Tc}L%{&>l6E(HAuDWIURG^)k)eZje{2KS}2$~wKwZT1<5`UNMExfBBt_Pi!Mi56eg-6)wp!pNmaDV zw6JFJC#JAgrz*_te7nS63#Rl;=xWxdw4`>)Q=O(+!w@6giby5iK8b*l^xa7zI-fNt zyPRh2^J))v{JE$L<|YOYOGT91xyjl|A!^kW&st@?wWH_ZU0SBS&?G!(dK$fQI^*K4Y@9$ap-C6rG*L#ZB>s3xXeWD~PlpPx-gGod|RCr$PoqcQ@XC24Czq_*?J5J)H%}blLQcr;s|3=<5Q9#c zNC#aDY*bni2(?0GQpH%eiv0)UeL;xz50YtUDNHQDHnC-tXssp~V{1nVn%X3dW51g13Ul@C*bh(WzPW4c_JM5jse&S zFMPAPGl0Lu35Pl(k<*t4Uj{J0xcFgW_!S3kAS!!lFne(gF&^g}0ts(1h3)C=jGWSn zE+##fN_C3`^(6owYKSD9FY;~GC*IK=4$sj)Irn!hCJz(vZ2&&!*H-^4Afh}tJwAIO ze3W9@>}HlLOn~zb)_>_Ps*v!m!2F-2Xe_ZCgkQU8X$`X!fnzsC{0Tb5&+qV5a>g$?XxJf3|_w7D7Th|{CDF3xQg)kLkPs4(IPJy zUM{i=>E2_-v%))8CSVAFP&kj~^9SKi{;_C(^x-gGpWG+c#JX-2jMX5t==U zriBrJYuE1z4w4|RdjRQ;k5$mPv6|=xAju??P(RQ{F}Siu7~?Xgf0qN&c510BT?x5?g-{E=COXug6Zh0d)Lh6Nu*w zWx;&cAbH&w)Igu1{`J^NKY+J3gP3e6i%S5Wg&MfdQ2%N=X%9nU*%;=Q=8!I2dMeoL zYer8?588w6aOxqHZUB)pgAffXs1J#)e*hQTs>xD!Us;hcappx#PETTHX$I;1{{i?l z02^@YwYTD~?RUW^+W$C2H-P4uBWRlck?s(*4!OuZNNxV9p}s~tG0t%8l_!efuXXfa z(~pCLhtTYAHaeA|e!2lj*}tRZKSL0d1zi(zA&BIbF(}Ogy82bqIGT>)7gImSYtyfl z9Y!P(pV)Fc_6_VSD#@-xHvsKMEI4};1IPmeWBOC} zuu?mA>Zm3G*r6S}bYvTVjFQ1j=0fpd%*N101f`&%uS0fg$7&r}3Lved@n-Z*ygK_A zoK2jC%GF{$+KtZEwr#kr`!@7<_9G;PDuUsJcC6NsWdLHi7{>lRiZ`OCP+<90>u3_2 zuw&g0-2Z_uqFGvd7t%@XSg9jR0A!Uce);YQrsgZ#i`gEz9tUnXQ1VQ0i*~Hgk?8;u z`2@z!jbd_k5`2~Yq1B2INWjfqw_vDm2oe9)&x_rp9V>KXDgaG8$Il+e>FBA7!@pdV zc3s%9?k4QrzIRziZq$z1Ix-D_UhR}Bq9kL$`xJJEoh{7@5mGYMzm9^c1=h9 z>pz0{#TZUbpR^z%Ylqakm0dM}YP7Rf6!}aZOY=+Mtopa-t&M!;=z6xYs{&w_c1i`5 zm-ASft4#=6O_k`#FaR^Pv(_h6PRYo`GGJ=ySK#gbgjYIWB|0($z$)#mS{Mg%*&I^y zsk+pWZU9zmr_pqz3xHkPDFvY(byP6`TeVY)KppC+A^=WlrxA2i7J$>*sdpW%3BVQF zsdF8b1mHI9)T@qG1>jcg)T5480C2T->QF~l0jL%2)RT^u0o0my>P1II05z$dI?)lm zKR?U$JV38>C(!A3wX&5>PyF>suIB-|)4}SQzZUk6=2%J7Ye&1Y9mFxb8eB7v`fUoHy?Ha%DgsjS+c7-ymT!agC)FcH@ z(C`a;zLLl-{>;kS-88nFbkrW~_$u8ye*cyN&;Chaiv7Q!;Sd=&=tvTL=fZ)&PI~x- zhXWUsi$`*5?pqD>`=Ji&h(Jm}3_KYm-;v_CpNCF7)H|!pzpOyr=Fo@Ik!hXMktF)g zY>2GCW9&;~=a;{J?iv5`EsHEZqHy(kN78U;QoD5|3er0r{*DJu?0>HK-sM%_|A)ti zKbqnBV+vCSIe26I|1tLIi1|hTt3iM0;EP}T-SQt!thfQ&|MLFuLVD?ltYp5SaP1`nYJ`bd3 zV_5w!+A3d$AAYn-ZE|-YGC#6!MI&!6!9;oj$Yp2vAC=iYPfdERGM7KW@)ekcF{tj0zLHnf`ZcQG^4 z_7&9PYgz#X+ZgHtbyUGM064d8Y;YAF?((A`5+gXyLmr&12s?4q<6P8`d@2sJDYGld zL|3{QNT)oFvq8HoS_^YjOZyqc8sq457^UCajUZX%14f|+rU}qTIP>rfec);t7{VHh zT+fchKNi{=-FVQyS-V+o5kPELX%F@e74|tL?#-#}N3B$7`RERQS1x?aZB+!=DrJ?Y zfsp_QeKj`%ho%^&LlExB7hw7n*+XAtkiof18ysLG0XLV##e?jiFl6;|356b}RA>SM z8@-59%>hIi(K1M&DlJ)(3)zE{Wnf0w{TlWJ$Mad00iaS7-P{^J1hp+vT2L1sxDp10 zO9hj_gr$JQ27Vx-uCG)&ka|B&(=lZw2u@djSz~F-;vY;@oKmKJTDlxkOiT;}tQ=~R zqZvrK8T4gJk`A~Xm}1LF7jaPS@?}F4FI&#S1?)j2X~7tna1S!}J>-!l0Vop4p@klN z>3p6Gtk6wyb^pl!jHLMo2HfJw&ntH{05O_@ssCC?7{2oN_ct{&-?#`|FB!g*BN&|@ z?C8hAD$RP1fe$m7C{ahy4E{FMgG~pZjBQ^wl27sTT~;#@N_>xhRQ0U(a)lKe1FZPi zR%Nn6v&(u0MlrzU%-ZanYVVj-@p5nd|%jk!B+!8|?imW^Z z=w1UlR~VY!(xR!Wb3?a0NZ%ZFolIcPAhsyDfG|V~rv#6<2lZuQ;KXQfQ-*i6Lo1sl zHG@E~NpV$%<|p7QKu=fB49n)h#(Yu-TivoDskG=V10mR)sp^}5N|hd$a!5f+ZH{GL z5v6{V8)5j3rIK}yfzY=DAl?m^(eaXeryryQx8|CmjujkKaBmkXiZ)4>px4EQ{>gSY zl}kOz(aa>!tyg;IVKe6bgPv}+sSG{)F(u@m}OD*ej& zFU1^ucP$~8x`jgvLCa>FG2{*(**DX&{)hdnMYeN~^CM9=Mt$pbX((FdkMtPhT5a~C+`kCmN6N!nN@hDP%`UHyf#M>O(|kg6BHsgR)mxtcQRgNxi=(lOd5^+||!e#L$jd$u0K{ zZ)WmpyzsiVl|@(Rw5ho4o@xP*cWDa4A3p?e4jzxO&oC4Eh&&Jnj7{|#XFU9$q-ZbZ z@QK~pn2u}zR*tw?>r|`PYl44OWl3@Z!sObxa-+x(Z}agWit?rY$c@2YLvTK5C%gb9*UNvr z#c3#%P*pr|cO4g(rB|bG8c^W}9y+ig zT)>Mw-0S>Wy~vJ*2vKtoKQBdu_1eJCEt1ZWq~aQL{fxB-UMuQwI=E_2)u^RLaX>|H z*pqu=uQq0|`?XH8AiB80C2TL^+HAoZI3-`v`{>qp?U${!BSM5ge2@GondR~YvXm(9 zze0yyZRZZ>H_j~y^5%co19q;n^MggfMk2@vwSH(89ZE?6f?(k3R)_H9+YH0RvhnmO zW>rnf5FU>6W6u8nLwTXuQEb=u{``a2lOPtv0OGV2QQvq443mxYAni?4oU07*t zu1$eoPOOPYsz62SXWwvKqc%%E{N%0(nNK6f)}lK>?^TPj%;dGl z?N_Vn(#aRb#cQNo#_CN`RqWp0k4gUp8*kr`df*wFZY3igw4^wIngwyP?o5SER&L&3 zHpq3J1cg1=P{1~nyn;COif4RuT3d1SE~x|XCMDRxNCDZ-X&YJU!Rs5%Kd}3)Ta1LI zr{QV!Gr#?Hgu5|gtcc+q%n_FB`}2q8%?jy@&kLll@I4uPij99%}gGBT996DT+FIn&927r6Rm@BW4W=8U(ds?Gl?C3yddOiS7<}Dw#C(( z>DN3mU6YG_$9($<@m9V`KWYGYuMTObmOvy3LPsso217vuD05)sKk=SN@e#!%CYc`U z#dM|3#zwH)GFDfTY=|5@hz>J-IY?O({eqh#C0WM3U<4hQk&X8S)&e-)?L@ygGF_v$ z=D7N`AH|KU_TpT;Dt>pHA|+eyBSW-SLyptz5XI!1ol>&91^8+}Il(v{!jXgT9hdV| zw?CIMOcRgq!^qVxqlpcoxI{lrcYOnIk3co4T)Y>Z=e=|oi|G2Zj2yfd$n$)93gW#D zva^B4`}{W)g~lrt#r6BqTxldFc`uN1yKy`dP5()g93;i=uXts{X?5ClP-E`@jL#g1 z2&BClEtM#-fgWjp8KNX2O5|`GVe{nupP3}!dHJuCHR2uJ=W+3#R2YfsEhfMR4bpMF zOqR_ZUi|c%f@=9S?$kE-N3d4Er#kneLbr)o-lJ_zbhgL@34Z^Lcc>qM5y9URR$d7wdAZA@??o}xobrb}ZWZZK zc(9q^!1cL7;^3FHK@sjnr0Bcpv#?O}t>61erKruqApZ)SorvFd>z_pDr#$aj#bdqZ$B1^VNKlQpPn2~E`6ZW8sIrxWJmu7FA%>rC$&XdPWd2u$6 z+3#G0Ux$BrR^z7LqSk*z8NJw|o6ofRl-EHmxs;8~GbrbZEO8H--60jEHM>1Abw|ju zHr!8~Jw?O5v+=0$tmo+8c~bN7^~*o}J#tmD$1$FXUY34@=&v4nM<@0odrG(-c$Qvt zh^sc2lV7fEc2tqKssNoD>x1ck)}7TAPQ-C)?5Aj z+4lIf%h{4Vvb|+%S;}63dSbMz{d?{xYpSC*%Y5d3!X}dI>&=sq0N&rpzx6UHUeL49 zG~KDGZ*nLVfmycw)$IYHi>FZo{}SZvV;^Y^^>j_@2Ah_YNVaJ!^a`69m83`OQPj)E zFIm%G==b914*2ccvzIO{+IOJ$8UeiJ=G^R$HMj=W&&DJ_FHPA8{J57hD=K|!X_ss2 zKcA5u3MzTD+y9o@Z5gSKt>ELidn)@*U$pNp2+aC~NWJi-4dW7BzKJKaVgI{B@K_=Q zf!6%Nn+P<_UQirkB1}H literal 0 HcmV?d00001 diff --git a/app/src/leanback/res/layout/view_control_seek.xml b/app/src/main/res/layout/view_control_seek.xml similarity index 100% rename from app/src/leanback/res/layout/view_control_seek.xml rename to app/src/main/res/layout/view_control_seek.xml diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 3a2d182b5..d2f196118 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -4,9 +4,6 @@ 影视 再按一次返回键退出 - - 正在加载配置 - 上次看到%s @@ -88,7 +85,7 @@ 播放数据加载失败 不支援的影片格式 连接超时 - 暂无播放数据 + 暂无播放数据 找不到数据 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b52dfb1e8..c15178d76 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -4,9 +4,6 @@ 影視 再按一次返回鍵退出 - - 正在載入配置 - 上次看到%s @@ -88,7 +85,7 @@ 播放資料載入失敗 不支援的影片格式 連線逾時 - 暫無播放資料 + 暫無播放資料 找不到資料 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 18679904c..cf94a147b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,9 +4,6 @@ TV Press back again to exit - - Loading configuration - Last seen %s @@ -88,7 +85,7 @@ Unable to load url Unsupported video format Timed out - No episode data + No episode data Not found