return to main activity if pip was launched before
This commit is contained in:
parent
e5037cf9ac
commit
86e07ba2cf
|
@ -32,6 +32,9 @@
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/PlayerTheme"
|
android:theme="@style/PlayerTheme"
|
||||||
android:supportsPictureInPicture="true"
|
android:supportsPictureInPicture="true"
|
||||||
|
android:launchMode="singleTask"
|
||||||
|
android:excludeFromRecents="true"
|
||||||
|
android:taskAffinity=".player.PlayerActivity"
|
||||||
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|layoutDirection">
|
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|layoutDirection">
|
||||||
</activity>
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
|
@ -3,7 +3,10 @@ package org.mosad.teapod.player
|
||||||
import android.animation.Animator
|
import android.animation.Animator
|
||||||
import android.animation.AnimatorListenerAdapter
|
import android.animation.AnimatorListenerAdapter
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.ActivityManager
|
||||||
import android.app.PictureInPictureParams
|
import android.app.PictureInPictureParams
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
@ -35,6 +38,7 @@ import java.util.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import kotlin.concurrent.scheduleAtFixedRate
|
import kotlin.concurrent.scheduleAtFixedRate
|
||||||
|
|
||||||
|
|
||||||
class PlayerActivity : AppCompatActivity() {
|
class PlayerActivity : AppCompatActivity() {
|
||||||
|
|
||||||
private val model: PlayerViewModel by viewModels()
|
private val model: PlayerViewModel by viewModels()
|
||||||
|
@ -43,6 +47,7 @@ class PlayerActivity : AppCompatActivity() {
|
||||||
private lateinit var gestureDetector: GestureDetectorCompat
|
private lateinit var gestureDetector: GestureDetectorCompat
|
||||||
private lateinit var timerUpdates: TimerTask
|
private lateinit var timerUpdates: TimerTask
|
||||||
|
|
||||||
|
private var wasInPIP = false
|
||||||
private var playWhenReady = true
|
private var playWhenReady = true
|
||||||
private var currentWindow = 0
|
private var currentWindow = 0
|
||||||
private var playbackPosition: Long = 0
|
private var playbackPosition: Long = 0
|
||||||
|
@ -117,6 +122,10 @@ class PlayerActivity : AppCompatActivity() {
|
||||||
video_view?.onPause()
|
video_view?.onPause()
|
||||||
releasePlayer()
|
releasePlayer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wasInPIP) {
|
||||||
|
navToLauncherTask()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSaveInstanceState(outState: Bundle) {
|
override fun onSaveInstanceState(outState: Bundle) {
|
||||||
|
@ -146,10 +155,15 @@ class PlayerActivity : AppCompatActivity() {
|
||||||
.build()
|
.build()
|
||||||
enterPictureInPictureMode(params)
|
enterPictureInPictureMode(params)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wasInPIP = isInPiPMode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean, newConfig: Configuration?) {
|
override fun onPictureInPictureModeChanged(
|
||||||
|
isInPictureInPictureMode: Boolean,
|
||||||
|
newConfig: Configuration?
|
||||||
|
) {
|
||||||
super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
|
super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
|
||||||
|
|
||||||
// Hide the full-screen UI (controls, etc.) while in picture-in-picture mode.
|
// Hide the full-screen UI (controls, etc.) while in picture-in-picture mode.
|
||||||
|
@ -434,6 +448,21 @@ class PlayerActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bring up launcher task to front
|
||||||
|
*/
|
||||||
|
private fun navToLauncherTask() {
|
||||||
|
val activityManager = (this.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager)
|
||||||
|
activityManager.appTasks.forEach { task ->
|
||||||
|
val baseIntent = task.taskInfo.baseIntent
|
||||||
|
val categories = baseIntent.categories
|
||||||
|
if (categories != null && categories.contains(Intent.CATEGORY_LAUNCHER)) {
|
||||||
|
task.moveToFront()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pause playback and hide controls
|
* pause playback and hide controls
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue