diff --git a/CHANGELOG.md b/CHANGELOG.md index e1def36e..bdeaa874 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 2.25.1 (June 27 2023) + +- [Fix]: Fix camera lifecycle on Android. - issue #645 + # 2.25.0 (May 17 2023) - [Update]: Update OpenTok Android SDK and OpenTok iOS SDK to version 2.25.1. diff --git a/android/src/main/java/com/opentokreactnative/OTSessionManager.java b/android/src/main/java/com/opentokreactnative/OTSessionManager.java index dc3a921f..a647937b 100644 --- a/android/src/main/java/com/opentokreactnative/OTSessionManager.java +++ b/android/src/main/java/com/opentokreactnative/OTSessionManager.java @@ -4,14 +4,15 @@ * Created by manik on 1/29/18. */ +import android.os.Build; import android.util.Log; import android.widget.FrameLayout; import android.view.View; import androidx.annotation.Nullable; - import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Callback; +import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; @@ -56,7 +57,9 @@ public class OTSessionManager extends ReactContextBaseJavaModule SubscriberKit.AudioStatsListener, SubscriberKit.VideoStatsListener, SubscriberKit.VideoListener, - SubscriberKit.StreamListener{ + SubscriberKit.StreamListener, + LifecycleEventListener + { private ConcurrentHashMap connectionStatusMap = new ConcurrentHashMap<>(); private ArrayList jsEvents = new ArrayList(); @@ -72,6 +75,7 @@ public OTSessionManager(ReactApplicationContext reactContext) { super(reactContext); sharedState = OTRN.getSharedState(); + reactContext.addLifecycleEventListener(this); } @ReactMethod @@ -981,5 +985,32 @@ public void onStreamVideoTypeChanged(Session session, Stream stream, Stream.Stre sendEventMap(this.getReactApplicationContext(), session.getSessionId() + ":" + sessionPreface + "onStreamPropertyChanged", eventData); printLogs("onStreamVideoTypeChanged"); } + @Override + public void onHostResume() { + ConcurrentHashMap mPublishers = sharedState.getPublishers(); + + for (String key: mPublishers.keySet()) { + Publisher publisher = mPublishers.get(key); + + if (publisher != null) { + publisher.onResume(); + } + } + } + + @Override + public void onHostPause() { + ConcurrentHashMap mPublishers = sharedState.getPublishers(); + + for (String key: mPublishers.keySet()) { + Publisher publisher = mPublishers.get(key); + + if (publisher != null) { + publisher.onPause(); + } + } + } + @Override + public void onHostDestroy() {} } diff --git a/package-lock.json b/package-lock.json index 4019ae6b..b15fb4e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "opentok-react-native", - "version": "2.25.0", + "version": "2.25.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "opentok-react-native", - "version": "2.25.0", + "version": "2.25.1", "license": "MIT", "dependencies": { "axios": "^0.21.1", diff --git a/package.json b/package.json index 42c01632..5da85cf1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opentok-react-native", - "version": "2.25.0", + "version": "2.25.1", "description": "React Native components for OpenTok iOS and Android SDKs", "main": "src/index.js", "homepage": "https://www.tokbox.com",