diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e0aef487f..408dc3c33 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,8 @@
+
+
@@ -77,5 +79,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java b/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java
similarity index 100%
rename from app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java
rename to app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java
diff --git a/app/src/mobile/res/drawable/ic_notify_next.xml b/app/src/main/res/drawable/ic_notify_next.xml
similarity index 100%
rename from app/src/mobile/res/drawable/ic_notify_next.xml
rename to app/src/main/res/drawable/ic_notify_next.xml
diff --git a/app/src/mobile/res/drawable/ic_notify_pause.xml b/app/src/main/res/drawable/ic_notify_pause.xml
similarity index 100%
rename from app/src/mobile/res/drawable/ic_notify_pause.xml
rename to app/src/main/res/drawable/ic_notify_pause.xml
diff --git a/app/src/mobile/res/drawable/ic_notify_play.xml b/app/src/main/res/drawable/ic_notify_play.xml
similarity index 100%
rename from app/src/mobile/res/drawable/ic_notify_play.xml
rename to app/src/main/res/drawable/ic_notify_play.xml
diff --git a/app/src/mobile/res/drawable/ic_notify_prev.xml b/app/src/main/res/drawable/ic_notify_prev.xml
similarity index 100%
rename from app/src/mobile/res/drawable/ic_notify_prev.xml
rename to app/src/main/res/drawable/ic_notify_prev.xml
diff --git a/app/src/mobile/AndroidManifest.xml b/app/src/mobile/AndroidManifest.xml
index be67dc5b2..570df0b99 100644
--- a/app/src/mobile/AndroidManifest.xml
+++ b/app/src/mobile/AndroidManifest.xml
@@ -8,8 +8,6 @@
-
-
@@ -117,26 +115,9 @@
android:name=".receiver.ShortcutReceiver"
android:exported="false" />
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
index e2a145b0d..e05a5a76c 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
@@ -88,12 +88,10 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
private Players mPlayers;
private Channel mChannel;
private Group mGroup;
- private Runnable mR0;
private Runnable mR1;
private Runnable mR2;
private Runnable mR3;
private Clock mClock;
- private boolean foreground;
private boolean initTrack;
private boolean redirect;
private boolean rotate;
@@ -149,13 +147,11 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mObserveEpg = this::setEpg;
mObserveUrl = this::start;
mHides = new ArrayList<>();
- mR0 = this::stopService;
mR1 = this::hideControl;
mR2 = this::setTraffic;
mR3 = this::hideInfo;
mPiP = new PiP();
Server.get().start();
- setForeground(true);
setRecyclerView();
setVideoView();
setViewModel();
@@ -200,6 +196,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
private void setVideoView() {
mPlayers.init(mBinding.exo);
+ PlaybackService.start(mPlayers);
setScale(Setting.getLiveScale());
ExoUtil.setSubtitleView(mBinding.exo);
mBinding.control.action.invert.setActivated(Setting.isInvert());
@@ -658,8 +655,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mPlayers.start(result, getTimeout());
}
- private void checkPlayImg(boolean playing) {
- mPiP.update(this, playing);
+ private void checkPlayImg() {
+ mPiP.update(this, mPlayers.isPlaying());
ActionEvent.update();
}
@@ -763,8 +760,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
break;
case Player.STATE_READY:
hideProgress();
+ checkPlayImg();
mPlayers.reset();
- checkPlayImg(mPlayers.isPlaying());
break;
case Player.STATE_ENDED:
checkNext();
@@ -886,21 +883,13 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
}
private void onPaused() {
- checkPlayImg(false);
mPlayers.pause();
+ checkPlayImg();
}
private void onPlay() {
- checkPlayImg(true);
mPlayers.play();
- }
-
- public boolean isForeground() {
- return foreground;
- }
-
- public void setForeground(boolean foreground) {
- this.foreground = foreground;
+ checkPlayImg();
}
private boolean isInitTrack() {
@@ -952,10 +941,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
this.lock = lock;
}
- private void stopService() {
- PlaybackService.stop();
- }
-
@Override
public void onCasted() {
}
@@ -1072,14 +1057,11 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, @NonNull Configuration newConfig) {
super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
if (isInPictureInPictureMode) {
- PlaybackService.start(mPlayers);
hideControl();
hideInfo();
hideUI();
} else {
hideInfo();
- App.post(mR0, 1000);
- setForeground(true);
if (isStop()) finish();
}
}
@@ -1107,20 +1089,14 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
@Override
protected void onResume() {
super.onResume();
- if (isForeground()) return;
if (isRedirect()) onPlay();
- App.post(mR0, 1000);
- setForeground(true);
setRedirect(false);
}
@Override
protected void onPause() {
super.onPause();
- setForeground(false);
- App.removeCallbacks(mR0);
if (isRedirect()) onPaused();
- if (Setting.isBackgroundOn() && !isFinishing()) PlaybackService.start(mPlayers);
}
@Override
@@ -1151,7 +1127,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
super.onDestroy();
mClock.release();
mPlayers.release();
- App.post(mR0, 1000);
+ PlaybackService.stop();
App.removeCallbacks(mR1, mR2, mR3);
mViewModel.url.removeObserver(mObserveUrl);
mViewModel.epg.removeObserver(mObserveEpg);
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
index 9aec20d81..989e677c6 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
@@ -131,7 +131,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private List mBroken;
private History mHistory;
private Players mPlayers;
- private boolean foreground;
private boolean fullscreen;
private boolean initTrack;
private boolean initAuto;
@@ -141,7 +140,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private boolean rotate;
private boolean stop;
private boolean lock;
- private Runnable mR0;
private Runnable mR1;
private Runnable mR2;
private Runnable mR3;
@@ -286,13 +284,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
mDialogs = new ArrayList<>();
mBroken = new ArrayList<>();
mClock = Clock.create();
- mR0 = this::stopService;
mR1 = this::hideControl;
mR2 = this::setTraffic;
mR3 = this::setOrient;
mR4 = this::showEmpty;
mPiP = new PiP();
- setForeground(true);
setRecyclerView();
setVideoView();
setViewModel();
@@ -367,6 +363,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private void setVideoView() {
mPlayers.init(mBinding.exo);
+ PlaybackService.start(mPlayers);
ExoUtil.setSubtitleView(mBinding.exo);
if (isPort() && ResUtil.isLand(this)) enterFullscreen();
mBinding.control.action.decode.setText(mPlayers.getDecodeText());
@@ -911,8 +908,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
mBinding.control.bottom.setVisibility(isLock() ? View.GONE : View.VISIBLE);
mBinding.control.top.setVisibility(isLock() ? View.GONE : View.VISIBLE);
mBinding.control.getRoot().setVisibility(View.VISIBLE);
- checkPlayImg(mPlayers.isPlaying());
setR1Callback();
+ checkPlayImg();
}
private void hideControl() {
@@ -999,9 +996,9 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
mHistory.setPosition(replay ? C.TIME_UNSET : mHistory.getPosition());
}
- private void checkPlayImg(boolean playing) {
- mBinding.control.play.setImageResource(playing ? androidx.media3.ui.R.drawable.exo_icon_pause : androidx.media3.ui.R.drawable.exo_icon_play);
- mPiP.update(this, playing);
+ private void checkPlayImg() {
+ mBinding.control.play.setImageResource(mPlayers.isPlaying() ? androidx.media3.ui.R.drawable.exo_icon_pause : androidx.media3.ui.R.drawable.exo_icon_play);
+ mPiP.update(this, mPlayers.isPlaying());
ActionEvent.update();
}
@@ -1089,8 +1086,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
break;
case Player.STATE_READY:
hideProgress();
+ checkPlayImg();
mPlayers.reset();
- checkPlayImg(mPlayers.isPlaying());
break;
case Player.STATE_ENDED:
checkEnded(true);
@@ -1124,8 +1121,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
onReset(true);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- checkPlayImg(false);
checkNext(notify);
+ checkPlayImg();
}
}
@@ -1275,24 +1272,16 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private void onPaused() {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- checkPlayImg(false);
mPlayers.pause();
+ checkPlayImg();
}
private void onPlay() {
if (mHistory != null && mPlayers.isEnded()) mPlayers.seekTo(mHistory.getOpening());
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
if (!mPlayers.isEmpty() && mPlayers.isIdle()) mPlayers.prepare();
- checkPlayImg(true);
mPlayers.play();
- }
-
- public boolean isForeground() {
- return foreground;
- }
-
- public void setForeground(boolean foreground) {
- this.foreground = foreground;
+ checkPlayImg();
}
private boolean isFullscreen() {
@@ -1380,10 +1369,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
adapter.notifyItemRangeChanged(0, adapter.getItemCount());
}
- private void stopService() {
- PlaybackService.stop();
- }
-
@Override
public void onCasted() {
onPaused();
@@ -1503,12 +1488,9 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
if (!isFullscreen()) setVideoView(isInPictureInPictureMode);
if (isInPictureInPictureMode) {
- PlaybackService.start(mPlayers);
hideControl();
hideSheet();
} else {
- App.post(mR0, 1000);
- setForeground(true);
if (isStop()) finish();
}
}
@@ -1538,20 +1520,14 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
@Override
protected void onResume() {
super.onResume();
- if (isForeground()) return;
if (isRedirect()) onPlay();
- App.post(mR0, 1000);
- setForeground(true);
setRedirect(false);
}
@Override
protected void onPause() {
super.onPause();
- setForeground(false);
- App.removeCallbacks(mR0);
if (isRedirect()) onPaused();
- else if (Setting.isBackgroundOn() && !isFinishing()) PlaybackService.start(mPlayers);
}
@Override
@@ -1581,8 +1557,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
mClock.release();
mPlayers.release();
Timer.get().reset();
- App.post(mR0, 1000);
RefreshEvent.history();
+ PlaybackService.stop();
App.removeCallbacks(mR1, mR2, mR3, mR4);
mViewModel.result.removeObserver(mObserveDetail);
mViewModel.player.removeObserver(mObservePlayer);