@@ -15,6 +15,7 @@ import video.api.livestream.enums.CameraFacingDirection
15
15
import video.api.livestream.interfaces.IConnectionListener
16
16
import video.api.livestream.models.AudioConfig
17
17
import video.api.livestream.models.VideoConfig
18
+ import video.api.reactnative.livestream.utils.OrientationManager
18
19
import video.api.reactnative.livestream.utils.permissions.PermissionsManager
19
20
import video.api.reactnative.livestream.utils.permissions.SerialPermissionsManager
20
21
import video.api.reactnative.livestream.utils.showDialog
@@ -33,6 +34,8 @@ class LiveStreamView @JvmOverloads constructor(
33
34
PermissionsManager ((context as ThemedReactContext ).reactApplicationContext)
34
35
)
35
36
37
+ private val orientationManager = OrientationManager (context)
38
+
36
39
// Connection listeners
37
40
var onConnectionSuccess: (() -> Unit )? = null
38
41
var onConnectionFailed: ((reason: String? ) -> Unit )? = null
@@ -204,6 +207,15 @@ class LiveStreamView @JvmOverloads constructor(
204
207
require(permissionsManager.hasPermission(Manifest .permission.CAMERA )) { " Missing permissions Manifest.permission.CAMERA" }
205
208
require(permissionsManager.hasPermission(Manifest .permission.RECORD_AUDIO )) { " Missing permissions Manifest.permission.RECORD_AUDIO" }
206
209
210
+ /* *
211
+ * Workaround to reapply video config in case orientation has changed.
212
+ * This happens because `configChanges` may be disabled in the AndroidManifest.xml of a RN
213
+ * application.
214
+ */
215
+ if (orientationManager.orientationHasChanged) {
216
+ liveStream.videoConfig = liveStream.videoConfig
217
+ }
218
+
207
219
url?.let { liveStream.startStreaming(streamKey, it) }
208
220
? : liveStream.startStreaming(streamKey)
209
221
@@ -219,6 +231,7 @@ class LiveStreamView @JvmOverloads constructor(
219
231
}
220
232
221
233
override fun close () {
234
+ orientationManager.close()
222
235
liveStream.release()
223
236
}
224
237
0 commit comments