diff --git a/app/libs/dlna-dmr-release.aar b/app/libs/dlna-dmr-release.aar index 234ca23fc..a32afcdcd 100644 Binary files a/app/libs/dlna-dmr-release.aar and b/app/libs/dlna-dmr-release.aar differ diff --git a/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java b/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java index cfe00ebc7..c4ae9d98b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java +++ b/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java @@ -46,6 +46,9 @@ public class Func { case R.string.home_push: this.drawable = R.drawable.ic_home_push; break; + case R.string.home_cast: + this.drawable = R.drawable.ic_home_cast; + break; case R.string.home_search: this.drawable = R.drawable.ic_home_search; break; diff --git a/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java b/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java index 513c7a8e2..dc817de3f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java +++ b/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java @@ -11,9 +11,7 @@ import android.os.Build; import androidx.annotation.NonNull; -import com.android.cast.dlna.dmr.DLNARendererService; import com.fongmi.android.tv.App; -import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.config.LiveConfig; public class BootReceiver extends BroadcastReceiver { @@ -45,7 +43,6 @@ public class BootReceiver extends BroadcastReceiver { private void doJob() { LiveConfig.get().init().load(); - DLNARendererService.Companion.start(App.get(), R.drawable.ic_logo); ((ConnectivityManager) App.get().getSystemService(Context.CONNECTIVITY_SERVICE)).unregisterNetworkCallback(this); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java index 8fd7b808d..9a771f896 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.ui.activity; import android.annotation.SuppressLint; +import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -55,7 +56,6 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List private CustomKeyDownCast mKeyDown; private RenderState mState; private CastAction mAction; - private DIDLParser mParser; private Players mPlayers; private Runnable mR1; private Runnable mR2; @@ -64,6 +64,10 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List private long duration; private int scale; + public static void start(Activity activity) { + activity.startActivity(new Intent(activity, CastActivity.class)); + } + @Override protected ViewBinding getBinding() { return mBinding = ActivityCastBinding.inflate(getLayoutInflater()); @@ -82,11 +86,9 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List mClock = Clock.create(mBinding.widget.clock); mKeyDown = CustomKeyDownCast.create(this); mPlayers = Players.create(this); - mParser = new DIDLParser(); mR1 = this::hideControl; mR2 = this::setTraffic; setVideoView(); - checkAction(); } @Override @@ -111,7 +113,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List private String getName() { try { - return mParser.parse(mAction.getCurrentURIMetaData()).getItems().get(0).getId(); + return new DIDLParser().parse(mAction.getCurrentURIMetaData()).getItems().get(0).getId(); } catch (Exception e) { return mAction.getCurrentURI(); } @@ -176,6 +178,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List private void onReset() { position = duration = C.TIME_UNSET; + if (mPlayers.isEmpty()) return; start(); } @@ -278,7 +281,6 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List public void onPlayerEvent(PlayerEvent event) { switch (event.getState()) { case PlayerEvent.PREPARE: - mPlayers.seekTo(position); setState(RenderState.PREPARING); break; case Player.STATE_IDLE: @@ -346,8 +348,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List } private void onPlay() { - if (!mPlayers.isEmpty() && mPlayers.isIdle()) mPlayers.prepare(); - if (mPlayers.isEnded()) mPlayers.seekTo(C.TIME_UNSET); + if (mPlayers.isEmpty()) return; setState(RenderState.PLAYING); mPlayers.play(); hideCenter(); @@ -360,7 +361,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List } private void setState(RenderState state) { - if (mService != null) mService.notifyAvTransportLastChange(this.mState = state); + if (mService != null) mService.notifyAvTransportLastChange(mState = state); } @NonNull @@ -387,7 +388,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List @Override public void onServiceConnected(ComponentName name, IBinder service) { - (mService = ((RendererServiceBinder) service).getService()).bindRealPlayer(this); + mService = ((RendererServiceBinder) service).getService(); } @Override @@ -434,15 +435,17 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List @Override public void onSeeking(int time) { + if (mPlayers.isEmpty()) return; + mBinding.widget.center.setVisibility(View.VISIBLE); mBinding.widget.exoDuration.setText(mPlayers.getDurationTime()); mBinding.widget.exoPosition.setText(mPlayers.getPositionTime(time)); mBinding.widget.action.setImageResource(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind); - mBinding.widget.center.setVisibility(View.VISIBLE); hideProgress(); } @Override public void onSeekTo(int time) { + if (mPlayers.isEmpty()) return; mKeyDown.resetTime(); mPlayers.seekTo(time); showProgress(); 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 ef75d1699..af8801796 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 @@ -15,7 +15,6 @@ import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; -import com.android.cast.dlna.dmr.DLNARendererService; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; @@ -95,7 +94,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override protected void initView() { - DLNARendererService.Companion.start(this, R.drawable.ic_logo); mClock = Clock.create(mBinding.clock).format("MM/dd HH:mm:ss"); mBinding.progressLayout.showProgress(); Updater.get().release().start(this); @@ -235,6 +233,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen adapter.add(Func.create(R.string.home_search)); adapter.add(Func.create(R.string.home_keep)); adapter.add(Func.create(R.string.home_push)); + adapter.add(Func.create(R.string.home_cast)); adapter.add(Func.create(R.string.home_setting)); return new ListRow(adapter); } @@ -384,6 +383,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen case R.string.home_push: PushActivity.start(this); break; + case R.string.home_cast: + CastActivity.start(this); + break; case R.string.home_setting: SettingActivity.start(this); break; 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 fd619ab78..8bb679e48 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 @@ -868,10 +868,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onSeeking(int time) { if (mPlayers.isLive()) return; + mBinding.widget.center.setVisibility(View.VISIBLE); mBinding.widget.exoDuration.setText(mPlayers.getDurationTime()); mBinding.widget.exoPosition.setText(mPlayers.getPositionTime(time)); mBinding.widget.action.setImageResource(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind); - mBinding.widget.center.setVisibility(View.VISIBLE); hideProgress(); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java index 6e23aa84b..368f0534a 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java @@ -26,7 +26,7 @@ public class PushActivity extends BaseActivity { } public static void start(Activity activity, int tab) { - Intent intent = new Intent(new Intent(activity, PushActivity.class)); + Intent intent = new Intent(activity, PushActivity.class); intent.putExtra("tab", tab); activity.startActivity(intent); } 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 a1c582f30..063a6f4fe 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 @@ -1311,10 +1311,10 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Override public void onSeeking(int time) { + mBinding.widget.center.setVisibility(View.VISIBLE); mBinding.widget.exoDuration.setText(mPlayers.getDurationTime()); mBinding.widget.exoPosition.setText(mPlayers.getPositionTime(time)); mBinding.widget.action.setImageResource(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind); - mBinding.widget.center.setVisibility(View.VISIBLE); hideProgress(); } diff --git a/app/src/leanback/res/drawable-hdpi/ic_home_cast.png b/app/src/leanback/res/drawable-hdpi/ic_home_cast.png new file mode 100644 index 000000000..d547c82d6 Binary files /dev/null and b/app/src/leanback/res/drawable-hdpi/ic_home_cast.png differ diff --git a/app/src/leanback/res/drawable-mdpi/ic_home_cast.png b/app/src/leanback/res/drawable-mdpi/ic_home_cast.png new file mode 100644 index 000000000..ac78014ca Binary files /dev/null and b/app/src/leanback/res/drawable-mdpi/ic_home_cast.png differ diff --git a/app/src/leanback/res/drawable-xhdpi/ic_home_cast.png b/app/src/leanback/res/drawable-xhdpi/ic_home_cast.png new file mode 100644 index 000000000..a48c58945 Binary files /dev/null and b/app/src/leanback/res/drawable-xhdpi/ic_home_cast.png differ diff --git a/app/src/leanback/res/drawable-xxhdpi/ic_home_cast.png b/app/src/leanback/res/drawable-xxhdpi/ic_home_cast.png new file mode 100644 index 000000000..66d251ed2 Binary files /dev/null and b/app/src/leanback/res/drawable-xxhdpi/ic_home_cast.png differ diff --git a/app/src/leanback/res/values-zh-rCN/strings.xml b/app/src/leanback/res/values-zh-rCN/strings.xml index c031f9cb4..e36be08cd 100644 --- a/app/src/leanback/res/values-zh-rCN/strings.xml +++ b/app/src/leanback/res/values-zh-rCN/strings.xml @@ -6,6 +6,7 @@ 搜索 收藏 推送 + 投屏 设置 最近观看 更新推荐 diff --git a/app/src/leanback/res/values-zh-rTW/strings.xml b/app/src/leanback/res/values-zh-rTW/strings.xml index 403a145b2..11b3ae2ed 100644 --- a/app/src/leanback/res/values-zh-rTW/strings.xml +++ b/app/src/leanback/res/values-zh-rTW/strings.xml @@ -6,6 +6,7 @@ 搜尋 收藏 推送 + 投屏 設定 最近觀看 更新推薦 diff --git a/app/src/leanback/res/values/strings.xml b/app/src/leanback/res/values/strings.xml index b091a85d3..0adcd3e7c 100644 --- a/app/src/leanback/res/values/strings.xml +++ b/app/src/leanback/res/values/strings.xml @@ -6,6 +6,7 @@ Search Keep Push + Cast Setting History Recommend diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index c13584160..91b1a8b51 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -40,7 +40,6 @@ import com.fongmi.android.tv.bean.Track; import com.fongmi.android.tv.event.ActionEvent; import com.fongmi.android.tv.event.ErrorEvent; import com.fongmi.android.tv.event.PlayerEvent; -import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.impl.ParseCallback; import com.fongmi.android.tv.impl.SessionCallback; import com.fongmi.android.tv.player.exo.ExoUtil; @@ -389,8 +388,7 @@ public class Players implements Player.Listener, ParseCallback { } private void setMediaItem() { - if (url == null) RefreshEvent.player(); - else setMediaItem(headers, url, format, drm, subs, Constant.TIMEOUT_PLAY); + if (url != null) setMediaItem(headers, url, format, drm, subs, Constant.TIMEOUT_PLAY); } public void setMediaItem(String url) {