1
1
package com.demosampleapp
2
2
3
+ import android.content.res.Configuration
4
+ import android.os.Build
5
+ import android.util.Log
6
+ import androidx.annotation.RequiresApi
7
+ import com.CometChatCalls.CallNotificationServiceModule
8
+ import com.CometChatCalls.PictureInPictureModule
3
9
import com.facebook.react.ReactActivity
4
10
import com.facebook.react.ReactActivityDelegate
11
+ import com.facebook.react.ReactApplication
12
+ import com.facebook.react.ReactInstanceManager
13
+ import com.facebook.react.bridge.ReactApplicationContext
5
14
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
6
15
import com.facebook.react.defaults.DefaultReactActivityDelegate
7
16
@@ -13,6 +22,59 @@ class MainActivity : ReactActivity() {
13
22
*/
14
23
override fun getMainComponentName (): String = " demosampleapp"
15
24
25
+ private fun getReactApplicationContextFromInstance (): ReactApplicationContext ? {
26
+ val reactInstanceManager: ReactInstanceManager ? = (application as ? ReactApplication )?.reactNativeHost?.reactInstanceManager
27
+ return reactInstanceManager?.currentReactContext as ? ReactApplicationContext
28
+ }
29
+
30
+ override fun onPictureInPictureModeChanged (
31
+ isInPictureInPictureMode : Boolean ,
32
+ newConfig : Configuration
33
+ ) {
34
+ super .onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
35
+
36
+ val reactContext = getReactApplicationContextFromInstance()
37
+ if (reactContext != null ) {
38
+ val pipEventModule = PictureInPictureModule (reactContext)
39
+ pipEventModule.notifyPipModeChanged(isInPictureInPictureMode)
40
+ }
41
+ }
42
+
43
+ fun initializePictureInPictureMode () {
44
+ val reactApplicationContext = getReactApplicationContextFromInstance()
45
+ if (reactApplicationContext != null ) {
46
+ val pipEventModule = PictureInPictureModule (reactApplicationContext)
47
+ pipEventModule.initializePictureInPictureMode();
48
+ }
49
+ }
50
+
51
+ @RequiresApi(Build .VERSION_CODES .O )
52
+ override fun onStart () {
53
+ super .onStart()
54
+ val reactInstanceManager: ReactInstanceManager ? = (application as ? ReactApplication )?.reactNativeHost?.reactInstanceManager
55
+ val reactApplicationContext = getReactApplicationContextFromInstance()
56
+
57
+ if (reactApplicationContext != null ) {
58
+ initializePictureInPictureMode();
59
+ } else {
60
+ reactInstanceManager?.addReactInstanceEventListener {
61
+ initializePictureInPictureMode();
62
+ }
63
+ }
64
+ }
65
+
66
+ @RequiresApi(api = Build .VERSION_CODES .O )
67
+ public override fun onUserLeaveHint () {
68
+ super .onUserLeaveHint()
69
+
70
+ val reactContext = getReactApplicationContextFromInstance()
71
+ if (reactContext != null ) {
72
+ val pipEventModule = PictureInPictureModule (reactContext)
73
+ pipEventModule.enterPictureInPictureMode();
74
+ }
75
+ }
76
+
77
+
16
78
/* *
17
79
* Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
18
80
* which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
0 commit comments