diff --git a/PictureInPictureKotlin/app/src/main/java/com/example/android/pictureinpicture/MainActivity.kt b/PictureInPictureKotlin/app/src/main/java/com/example/android/pictureinpicture/MainActivity.kt index 7950d46..9a1f7d7 100644 --- a/PictureInPictureKotlin/app/src/main/java/com/example/android/pictureinpicture/MainActivity.kt +++ b/PictureInPictureKotlin/app/src/main/java/com/example/android/pictureinpicture/MainActivity.kt @@ -16,9 +16,7 @@ package com.example.android.pictureinpicture -import android.app.PendingIntent -import android.app.PictureInPictureParams -import android.app.RemoteAction +import android.app.* import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -26,7 +24,9 @@ import android.content.IntentFilter import android.content.res.Configuration import android.graphics.drawable.Icon import android.net.Uri +import android.os.Build import android.os.Bundle +import android.util.Log import android.util.Rational import android.view.View import android.widget.Button @@ -178,6 +178,7 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + registerActivityLifecycleCallbacks() setContentView(R.layout.activity_main) // View references @@ -268,6 +269,42 @@ class MainActivity : AppCompatActivity() { } } + private fun registerActivityLifecycleCallbacks() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { + private val TAG = MainActivity::class.java.simpleName + + override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { + Log.d(TAG, "onActivityCreated: [isInPictureInPictureMode=$isInPictureInPictureMode]") + } + + override fun onActivityStarted(activity: Activity) { + Log.d(TAG, "onActivityStarted: [isInPictureInPictureMode=$isInPictureInPictureMode]") + } + + override fun onActivityResumed(activity: Activity) { + Log.d(TAG, "onActivityResumed: [isInPictureInPictureMode=$isInPictureInPictureMode]") + } + + override fun onActivityPaused(activity: Activity) { + Log.d(TAG, "onActivityPaused: [isInPictureInPictureMode=$isInPictureInPictureMode] [isFinishing=$isFinishing]") + } + + override fun onActivityStopped(activity: Activity) { + Log.d(TAG, "onActivityStopped: [isInPictureInPictureMode=$isInPictureInPictureMode] [isFinishing=$isFinishing]") + } + + override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) { + Log.d(TAG, "onActivitySaveInstanceState: [isInPictureInPictureMode=$isInPictureInPictureMode]") + } + + override fun onActivityDestroyed(activity: Activity) { + Log.d(TAG, "onActivityDestroyed: [isInPictureInPictureMode=$isInPictureInPictureMode]") + } + }) + } + } + /** * Launches [MediaSessionPlaybackActivity] and closes this activity. */ diff --git a/documents/REPORT.MD b/documents/REPORT.MD new file mode 100644 index 0000000..76e7618 --- /dev/null +++ b/documents/REPORT.MD @@ -0,0 +1,52 @@ +### Scenario: launch player, go to Pip, dismiss Pip (dragging to the bottom) + +##### Android 10 +``` +2021-04-07 14:22:35.434 18884-18884/com.example.android.pictureinpicture D/MainActivity: onActivityStarted: [isInPictureInPictureMode=false] +2021-04-07 14:22:35.438 18884-18884/com.example.android.pictureinpicture D/MainActivity: onActivityResumed: [isInPictureInPictureMode=false] +2021-04-07 14:22:59.436 18884-18884/com.example.android.pictureinpicture D/MainActivity: onActivityPaused: [isInPictureInPictureMode=true] [isFinishing=false] +2021-04-07 14:23:04.868 18884-18884/com.example.android.pictureinpicture D/MainActivity: onActivityStopped: [isInPictureInPictureMode=false] [isFinishing=false] +2021-04-07 14:23:04.898 18884-18884/com.example.android.pictureinpicture D/MainActivity: onActivitySaveInstanceState: [isInPictureInPictureMode=false] +``` + +##### Android 11 + +``` +2021-04-07 14:24:22.956 10452-10452/com.example.android.pictureinpicture D/MainActivity: onActivityStarted: [isInPictureInPictureMode=false] +2021-04-07 14:24:22.959 10452-10452/com.example.android.pictureinpicture D/MainActivity: onActivityResumed: [isInPictureInPictureMode=false] +2021-04-07 14:24:34.530 10452-10452/com.example.android.pictureinpicture D/MainActivity: onActivityPaused: [isInPictureInPictureMode=true] [isFinishing=false] +2021-04-07 14:24:38.336 10452-10452/com.example.android.pictureinpicture D/MainActivity: onActivityStopped: [isInPictureInPictureMode=true] [isFinishing=false] +2021-04-07 14:24:38.337 10452-10452/com.example.android.pictureinpicture D/MainActivity: onActivitySaveInstanceState: [isInPictureInPictureMode=true] +``` + +##### Observations: +- in onStop, Android10 reports isInPictureInPictureMode=false whereas Android 11 reports isInPictureInPictureMode=true + + +### Scenario: launch player, go to Pip, close Pip (with the x button) +Same logs and results from previous scenario. + +### Scenario: launch player, go to Pip, lock the device + +##### Android 10 +``` +2021-04-07 14:54:48.415 23945-23945/com.example.android.pictureinpicture D/MainActivity: onActivityStarted: [isInPictureInPictureMode=false] +2021-04-07 14:54:48.416 23945-23945/com.example.android.pictureinpicture D/MainActivity: onActivityResumed: [isInPictureInPictureMode=false] +2021-04-07 14:54:50.705 23945-23945/com.example.android.pictureinpicture D/MainActivity: onActivityPaused: [isInPictureInPictureMode=true] [isFinishing=false] +2021-04-07 14:54:55.116 23945-23945/com.example.android.pictureinpicture D/MainActivity: onActivityStopped: [isInPictureInPictureMode=true] [isFinishing=false] +2021-04-07 14:54:55.117 23945-23945/com.example.android.pictureinpicture D/MainActivity: onActivitySaveInstanceState: [isInPictureInPictureMode=true] +``` + +##### Android 11 + +``` +2021-04-07 14:59:01.788 8046-8046/com.example.android.pictureinpicture D/MainActivity: onActivityStarted: [isInPictureInPictureMode=false] +2021-04-07 14:59:01.790 8046-8046/com.example.android.pictureinpicture D/MainActivity: onActivityResumed: [isInPictureInPictureMode=false] +2021-04-07 14:59:04.876 8046-8046/com.example.android.pictureinpicture D/MainActivity: onActivityPaused: [isInPictureInPictureMode=true] [isFinishing=false] +2021-04-07 14:59:09.917 8046-8046/com.example.android.pictureinpicture D/MainActivity: onActivityStopped: [isInPictureInPictureMode=true] [isFinishing=false] +2021-04-07 14:59:09.919 8046-8046/com.example.android.pictureinpicture D/MainActivity: onActivitySaveInstanceState: [isInPictureInPictureMode=true] +``` + +##### Observations: +- no differences between Android 10 and Android 11 +- in onStop, Android 10 reports isInPictureInPictureMode=true, but in the scenario where the Pip is dismissed or closed, it returns isInPictureInPictureMode=false in onStop \ No newline at end of file diff --git a/documents/str.webm b/documents/str.webm new file mode 100644 index 0000000..f7b89f2 Binary files /dev/null and b/documents/str.webm differ