Fix build for mobile

pull/123/head
FongMi 3 years ago
parent 232be67301
commit 110f11db83
  1. 39
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 8
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 0
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java
  4. 18
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java
  5. 0
      app/src/leanback/res/layout/adapter_track.xml
  6. 11
      app/src/main/java/com/fongmi/android/tv/bean/History.java
  7. 7
      app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java
  8. 6
      app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java
  9. 4
      app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java
  10. BIN
      app/src/main/res/drawable-hdpi/ic_img_empty.png
  11. BIN
      app/src/main/res/drawable-mdpi/ic_img_empty.png
  12. BIN
      app/src/main/res/drawable-xhdpi/ic_img_empty.png
  13. BIN
      app/src/main/res/drawable-xxhdpi/ic_img_empty.png
  14. 0
      app/src/main/res/layout/view_control_seek.xml
  15. 5
      app/src/main/res/values-zh-rCN/strings.xml
  16. 5
      app/src/main/res/values-zh-rTW/strings.xml
  17. 5
      app/src/main/res/values/strings.xml

@ -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();

@ -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;

@ -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;
}

@ -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<Vod.Flag> 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());

@ -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
}
}

@ -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());

@ -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) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

@ -4,9 +4,6 @@
<string name="app_name">影视</string>
<string name="app_exit">再按一次返回键退出</string>
<!-- Splash -->
<string name="splash_info">正在加载配置</string>
<!-- Vod -->
<string name="vod_last">上次看到<xliff:g name="name">%s</xliff:g></string>
@ -88,7 +85,7 @@
<string name="error_play_url">播放数据加载失败</string>
<string name="error_play_format">不支援的影片格式</string>
<string name="error_play_timeout">连接超时</string>
<string name="error_episode">暂无播放数据</string>
<string name="error_play_episode">暂无播放数据</string>
<string name="error_empty">找不到数据</string>
<!-- Update -->

@ -4,9 +4,6 @@
<string name="app_name">影視</string>
<string name="app_exit">再按一次返回鍵退出</string>
<!-- Splash -->
<string name="splash_info">正在載入配置</string>
<!-- Vod -->
<string name="vod_last">上次看到<xliff:g name="name">%s</xliff:g></string>
@ -88,7 +85,7 @@
<string name="error_play_url">播放資料載入失敗</string>
<string name="error_play_format">不支援的影片格式</string>
<string name="error_play_timeout">連線逾時</string>
<string name="error_episode">暫無播放資料</string>
<string name="error_play_episode">暫無播放資料</string>
<string name="error_empty">找不到資料</string>
<!-- Update -->

@ -4,9 +4,6 @@
<string name="app_name">TV</string>
<string name="app_exit">Press back again to exit</string>
<!-- Splash -->
<string name="splash_info">Loading configuration</string>
<!-- Vod -->
<string name="vod_last">Last seen <xliff:g name="name">%s</xliff:g></string>
@ -88,7 +85,7 @@
<string name="error_play_url">Unable to load url</string>
<string name="error_play_format">Unsupported video format</string>
<string name="error_play_timeout">Timed out</string>
<string name="error_episode">No episode data</string>
<string name="error_play_episode">No episode data</string>
<string name="error_empty">Not found</string>
<!-- Update -->

Loading…
Cancel
Save