mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-09-10 19:46:10 +00:00
Implemented to background button in pip.
This commit is contained in:
parent
18102a2a73
commit
bf7001b578
2 changed files with 25 additions and 1 deletions
|
@ -46,6 +46,8 @@ import com.futo.platformplayer.R
|
||||||
import com.futo.platformplayer.Settings
|
import com.futo.platformplayer.Settings
|
||||||
import com.futo.platformplayer.UIDialogs
|
import com.futo.platformplayer.UIDialogs
|
||||||
import com.futo.platformplayer.UISlideOverlays
|
import com.futo.platformplayer.UISlideOverlays
|
||||||
|
import com.futo.platformplayer.activities.MainActivity
|
||||||
|
import com.futo.platformplayer.activities.SettingsActivity
|
||||||
import com.futo.platformplayer.api.media.IPluginSourced
|
import com.futo.platformplayer.api.media.IPluginSourced
|
||||||
import com.futo.platformplayer.api.media.LiveChatManager
|
import com.futo.platformplayer.api.media.LiveChatManager
|
||||||
import com.futo.platformplayer.api.media.PlatformID
|
import com.futo.platformplayer.api.media.PlatformID
|
||||||
|
@ -688,6 +690,20 @@ class VideoDetailView : ConstraintLayout {
|
||||||
Logger.i(TAG, "MediaControlReceiver.onCloseReceived")
|
Logger.i(TAG, "MediaControlReceiver.onCloseReceived")
|
||||||
onClose.emit()
|
onClose.emit()
|
||||||
};
|
};
|
||||||
|
MediaControlReceiver.onBackgroundReceived.subscribe(this) {
|
||||||
|
Logger.i(TAG, "MediaControlReceiver.onBackgroundReceived")
|
||||||
|
_player.switchToAudioMode();
|
||||||
|
allowBackground = true;
|
||||||
|
StateApp.instance.contextOrNull?.let {
|
||||||
|
try {
|
||||||
|
if (it is MainActivity) {
|
||||||
|
it.moveTaskToBack(true)
|
||||||
|
}
|
||||||
|
} catch (e: Throwable) {
|
||||||
|
Logger.i(TAG, "Failed to move task to back", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
MediaControlReceiver.onSeekToReceived.subscribe(this) { handleSeek(it); };
|
MediaControlReceiver.onSeekToReceived.subscribe(this) { handleSeek(it); };
|
||||||
|
|
||||||
_container_content_description.onClose.subscribe { switchContentView(_container_content_main); };
|
_container_content_description.onClose.subscribe { switchContentView(_container_content_main); };
|
||||||
|
@ -1141,6 +1157,7 @@ class VideoDetailView : ConstraintLayout {
|
||||||
MediaControlReceiver.onNextReceived.remove(this);
|
MediaControlReceiver.onNextReceived.remove(this);
|
||||||
MediaControlReceiver.onPreviousReceived.remove(this);
|
MediaControlReceiver.onPreviousReceived.remove(this);
|
||||||
MediaControlReceiver.onCloseReceived.remove(this);
|
MediaControlReceiver.onCloseReceived.remove(this);
|
||||||
|
MediaControlReceiver.onBackgroundReceived.remove(this);
|
||||||
MediaControlReceiver.onSeekToReceived.remove(this);
|
MediaControlReceiver.onSeekToReceived.remove(this);
|
||||||
|
|
||||||
val job = _jobHideResume;
|
val job = _jobHideResume;
|
||||||
|
@ -2725,10 +2742,11 @@ class VideoDetailView : ConstraintLayout {
|
||||||
else
|
else
|
||||||
RemoteAction(Icon.createWithResource(context, R.drawable.ic_play_notif), context.getString(R.string.play), context.getString(R.string.resumes_the_video), MediaControlReceiver.getPlayIntent(context, 6));
|
RemoteAction(Icon.createWithResource(context, R.drawable.ic_play_notif), context.getString(R.string.play), context.getString(R.string.resumes_the_video), MediaControlReceiver.getPlayIntent(context, 6));
|
||||||
|
|
||||||
|
val toBackgroundAction = RemoteAction(Icon.createWithResource(context, R.drawable.ic_screen_share), context.getString(R.string.background), context.getString(R.string.background_switch_audio), MediaControlReceiver.getToBackgroundIntent(context, 7));
|
||||||
return PictureInPictureParams.Builder()
|
return PictureInPictureParams.Builder()
|
||||||
.setAspectRatio(Rational(videoSourceWidth, videoSourceHeight))
|
.setAspectRatio(Rational(videoSourceWidth, videoSourceHeight))
|
||||||
.setSourceRectHint(r)
|
.setSourceRectHint(r)
|
||||||
.setActions(listOf(playpauseAction))
|
.setActions(listOf(toBackgroundAction, playpauseAction))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ class MediaControlReceiver : BroadcastReceiver() {
|
||||||
EVENT_NEXT -> onNextReceived.emit();
|
EVENT_NEXT -> onNextReceived.emit();
|
||||||
EVENT_PREV -> onPreviousReceived.emit();
|
EVENT_PREV -> onPreviousReceived.emit();
|
||||||
EVENT_CLOSE -> onCloseReceived.emit();
|
EVENT_CLOSE -> onCloseReceived.emit();
|
||||||
|
EVENT_BACKGROUND -> onBackgroundReceived.emit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(ex: Throwable) {
|
catch(ex: Throwable) {
|
||||||
|
@ -38,6 +39,7 @@ class MediaControlReceiver : BroadcastReceiver() {
|
||||||
const val EVENT_NEXT = "Next";
|
const val EVENT_NEXT = "Next";
|
||||||
const val EVENT_PREV = "Prev";
|
const val EVENT_PREV = "Prev";
|
||||||
const val EVENT_CLOSE = "Close";
|
const val EVENT_CLOSE = "Close";
|
||||||
|
const val EVENT_BACKGROUND = "Background";
|
||||||
|
|
||||||
val onPlayReceived = Event0();
|
val onPlayReceived = Event0();
|
||||||
val onPauseReceived = Event0();
|
val onPauseReceived = Event0();
|
||||||
|
@ -48,6 +50,7 @@ class MediaControlReceiver : BroadcastReceiver() {
|
||||||
val onLowerVolumeReceived = Event0();
|
val onLowerVolumeReceived = Event0();
|
||||||
|
|
||||||
val onCloseReceived = Event0()
|
val onCloseReceived = Event0()
|
||||||
|
val onBackgroundReceived = Event0()
|
||||||
|
|
||||||
fun getPlayIntent(context: Context, code: Int = 0) : PendingIntent = PendingIntent.getBroadcast(context, code, Intent(context, MediaControlReceiver::class.java).apply {
|
fun getPlayIntent(context: Context, code: Int = 0) : PendingIntent = PendingIntent.getBroadcast(context, code, Intent(context, MediaControlReceiver::class.java).apply {
|
||||||
this.putExtra(EXTRA_MEDIA_ACTION, EVENT_PLAY);
|
this.putExtra(EXTRA_MEDIA_ACTION, EVENT_PLAY);
|
||||||
|
@ -64,5 +67,8 @@ class MediaControlReceiver : BroadcastReceiver() {
|
||||||
fun getCloseIntent(context: Context, code: Int = 0) : PendingIntent = PendingIntent.getBroadcast(context, code, Intent(context, MediaControlReceiver::class.java).apply {
|
fun getCloseIntent(context: Context, code: Int = 0) : PendingIntent = PendingIntent.getBroadcast(context, code, Intent(context, MediaControlReceiver::class.java).apply {
|
||||||
this.putExtra(EXTRA_MEDIA_ACTION, EVENT_CLOSE);
|
this.putExtra(EXTRA_MEDIA_ACTION, EVENT_CLOSE);
|
||||||
},PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT);
|
},PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
fun getToBackgroundIntent(context: Context, code: Int = 0) : PendingIntent = PendingIntent.getBroadcast(context, code, Intent(context, MediaControlReceiver::class.java).apply {
|
||||||
|
this.putExtra(EXTRA_MEDIA_ACTION, EVENT_BACKGROUND);
|
||||||
|
},PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue