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