From 80358e0804b663d23783312fd3e60cdd7965655b Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 7 Sep 2023 00:29:20 +0800 Subject: [PATCH] [mobile] support bg play - part 4 --- .../main/java/com/fongmi/android/tv/Setting.java | 2 +- .../com/fongmi/android/tv/player/Players.java | 14 ++++++++++++-- app/src/main/res/values-zh-rCN/strings.xml | 4 ++-- app/src/main/res/values-zh-rTW/strings.xml | 4 ++-- app/src/main/res/values/strings.xml | 4 ++-- .../android/tv/service/PlaybackService.java | 15 ++++----------- .../android/tv/ui/activity/LiveActivity.java | 6 ++++-- .../android/tv/ui/activity/VideoActivity.java | 6 ++++-- 8 files changed, 31 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java index c9fe33479..d8251d603 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -231,7 +231,7 @@ public class Setting { } public static boolean isBackgroundOn() { - return getBackground() == 1 || getBackground() == 2; + return getBackground() == 1; } public static boolean isBackgroundPiP() { 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 37447307b..775fb1dca 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 @@ -1,5 +1,8 @@ package com.fongmi.android.tv.player; +import android.app.Activity; +import android.app.PendingIntent; +import android.content.Intent; import android.support.v4.media.session.MediaSessionCompat; import android.text.TextUtils; @@ -24,6 +27,7 @@ import com.fongmi.android.tv.event.PlayerEvent; import com.fongmi.android.tv.impl.ParseCallback; import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.ResUtil; +import com.fongmi.android.tv.utils.Utils; import com.github.catvod.crawler.SpiderDebug; import java.util.Formatter; @@ -73,16 +77,22 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic return player == SYS || player == IJK; } - public Players init() { + public Players init(Activity activity) { player = Setting.getPlayer(); decode = Setting.getDecode(); builder = new StringBuilder(); runnable = ErrorEvent::timeout; - session = new MediaSessionCompat(App.get(), "TV"); formatter = new Formatter(builder, Locale.getDefault()); + createSession(activity); return this; } + private void createSession(Activity activity) { + session = new MediaSessionCompat(activity, "TV"); + session.setSessionActivity(PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()), Utils.getPendingFlag())); + session.setActive(true); + } + public void set(PlayerView exo, IjkVideoView ijk) { releaseExo(); releaseIjk(); diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index a11a5df0a..a07418a7d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -80,8 +80,8 @@ 缓存 版本 权限 - - + 关闭 + 开启 关键字… diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 9f347ab25..7c73df02f 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -80,8 +80,8 @@ 暫存 版本 權限 - - + 關閉 + 開啟 關鍵字… diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4e5064e46..f5bf52626 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -80,8 +80,8 @@ Cache Version Permission - OFF - ON + Off + On Keywords… diff --git a/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java b/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java index 33cba0231..6c64a142b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java +++ b/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java @@ -1,9 +1,7 @@ package com.fongmi.android.tv.service; -import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; -import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; @@ -29,7 +27,6 @@ import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.receiver.ActionReceiver; import com.fongmi.android.tv.utils.ImgUtil; import com.fongmi.android.tv.utils.Notify; -import com.fongmi.android.tv.utils.Utils; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -37,14 +34,12 @@ import org.greenrobot.eventbus.ThreadMode; public class PlaybackService extends Service { - private static Class classes; private static Players players; private final int ID = 9527; private Bitmap bitmap; - public static void start(Activity activity, Players players) { - ContextCompat.startForegroundService(activity, new Intent(activity, PlaybackService.class)); - PlaybackService.classes = activity.getClass(); + public static void start(Players players) { + ContextCompat.startForegroundService(App.get(), new Intent(App.get(), PlaybackService.class)); PlaybackService.players = players; } @@ -82,13 +77,11 @@ public class PlaybackService extends Service { } private Notification buildNotification() { - Intent intent = new Intent(this, classes); - PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, Utils.getPendingFlag()); NotificationCompat.Builder builder = new NotificationCompat.Builder(this, Notify.DEFAULT); builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); builder.setPriority(NotificationCompat.PRIORITY_LOW); builder.setSmallIcon(R.drawable.ic_logo); - builder.setContentIntent(pendingIntent); + builder.setContentIntent(players.getSession().getController().getSessionActivity()); builder.setContentTitle(getTitle()); builder.setContentText(getText()); builder.setOngoing(false); @@ -100,7 +93,7 @@ public class PlaybackService extends Service { MediaStyle mediaStyle = new MediaStyle(); mediaStyle.setShowActionsInCompactView(0, 2); mediaStyle.setShowCancelButton(true); - //mediaStyle.setMediaSession(players.getSession().getSessionToken()); + mediaStyle.setMediaSession(players.getSession().getSessionToken()); mediaStyle.setCancelButtonIntent(ActionReceiver.getPendingIntent(this, ActionEvent.CANCEL)); builder.setDeleteIntent(ActionReceiver.getPendingIntent(this, ActionEvent.CANCEL)); if (bitmap != null) setLargeIcon(builder); 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 51f9413d1..c0cc73aff 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 @@ -149,7 +149,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List mFormatDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); mKeyDown = CustomKeyDownLive.create(this, mBinding.video); mClock = Clock.create(mBinding.widget.time); - mPlayers = new Players().init(); + mPlayers = new Players().init(this); mHides = new ArrayList<>(); mR1 = this::hideControl; mR2 = this::setTraffic; @@ -891,12 +891,14 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { super.onPictureInPictureModeChanged(isInPictureInPictureMode); if (isInPictureInPictureMode) { + PlaybackService.start(mPlayers); setSubtitle(10); hideControl(); hideInfo(); hideUI(); } else { hideInfo(); + PlaybackService.stop(); setSubtitle(Setting.getSubtitle()); if (isStop()) finish(); } @@ -931,7 +933,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List @Override protected void onPause() { super.onPause(); - if (Setting.isBackgroundOn()) PlaybackService.start(this, mPlayers); + if (Setting.isBackgroundOn()) PlaybackService.start(mPlayers); mClock.stop(); } 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 273755647..4147d2442 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 @@ -272,10 +272,10 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mFrameParams = mBinding.video.getLayoutParams(); mBinding.progressLayout.showProgress(); mBinding.swipeLayout.setEnabled(false); + mPlayers = new Players().init(this); mObserveDetail = this::setDetail; mObservePlayer = this::setPlayer; mObserveSearch = this::setSearch; - mPlayers = new Players().init(); mDialogs = new ArrayList<>(); mBroken = new ArrayList<>(); mClock = Clock.create(); @@ -1430,12 +1430,14 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { super.onPictureInPictureModeChanged(isInPictureInPictureMode); if (isInPictureInPictureMode) { + PlaybackService.start(mPlayers); enterFullscreen(); setSubtitle(10); hideControl(); hideSheet(); } else { exitFullscreen(); + PlaybackService.stop(); if (isStop()) finish(); } } @@ -1471,7 +1473,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo @Override protected void onPause() { super.onPause(); - if (Setting.isBackgroundOn()) PlaybackService.start(this, mPlayers); + if (Setting.isBackgroundOn()) PlaybackService.start(mPlayers); } @Override