@100mslive/react-native-hms 0.9.8 → 0.9.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +50 -43
  2. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  3. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  4. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  6. package/android/.gradle/checksums/checksums.lock +0 -0
  7. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  8. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  9. package/android/.idea/libraries/{Gradle__com_github_100mslive_android_sdk_lib_2_4_2_aar.xml → Gradle__com_github_100mslive_android_sdk_lib_2_4_7_aar.xml} +4 -4
  10. package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m97_hms_1_1_aar.xml +11 -0
  11. package/android/.idea/modules/android.androidTest.iml +4 -4
  12. package/android/.idea/modules/android.main.iml +4 -4
  13. package/android/.idea/modules/android.unitTest.iml +4 -4
  14. package/android/build.gradle +2 -2
  15. package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +84 -0
  16. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +77 -8
  17. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +95 -22
  18. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +88 -2
  19. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +282 -49
  20. package/ios/HMSDecoder.swift +9 -8
  21. package/ios/HMSHelper.swift +5 -8
  22. package/ios/HMSManager.m +4 -1
  23. package/ios/HMSManager.swift +28 -6
  24. package/ios/HMSRNSDK.swift +146 -101
  25. package/lib/commonjs/classes/HMSAudioDevice.js +17 -0
  26. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -0
  27. package/lib/commonjs/classes/HMSAudioMixingMode.js +15 -0
  28. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -0
  29. package/lib/commonjs/classes/HMSAudioMode.js +17 -0
  30. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -0
  31. package/lib/commonjs/classes/HMSEncoder.js +15 -0
  32. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  33. package/lib/commonjs/classes/HMSException.js +18 -13
  34. package/lib/commonjs/classes/HMSException.js.map +1 -1
  35. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  36. package/lib/commonjs/classes/HMSLogger.js +2 -2
  37. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  38. package/lib/commonjs/classes/HMSPermissions.js +7 -4
  39. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  40. package/lib/commonjs/classes/HMSSDK.js +267 -58
  41. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  42. package/lib/commonjs/classes/HMSUpdateListenerActions.js +1 -0
  43. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  44. package/lib/commonjs/index.js +42 -0
  45. package/lib/commonjs/index.js.map +1 -1
  46. package/lib/module/classes/HMSAudioDevice.js +10 -0
  47. package/lib/module/classes/HMSAudioDevice.js.map +1 -0
  48. package/lib/module/classes/HMSAudioMixingMode.js +8 -0
  49. package/lib/module/classes/HMSAudioMixingMode.js.map +1 -0
  50. package/lib/module/classes/HMSAudioMode.js +10 -0
  51. package/lib/module/classes/HMSAudioMode.js.map +1 -0
  52. package/lib/module/classes/HMSEncoder.js +14 -0
  53. package/lib/module/classes/HMSEncoder.js.map +1 -1
  54. package/lib/module/classes/HMSException.js +18 -13
  55. package/lib/module/classes/HMSException.js.map +1 -1
  56. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  57. package/lib/module/classes/HMSLogger.js +2 -2
  58. package/lib/module/classes/HMSLogger.js.map +1 -1
  59. package/lib/module/classes/HMSPermissions.js +7 -4
  60. package/lib/module/classes/HMSPermissions.js.map +1 -1
  61. package/lib/module/classes/HMSSDK.js +267 -52
  62. package/lib/module/classes/HMSSDK.js.map +1 -1
  63. package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
  64. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  65. package/lib/module/index.js +3 -0
  66. package/lib/module/index.js.map +1 -1
  67. package/lib/typescript/classes/HMSAudioDevice.d.ts +7 -0
  68. package/lib/typescript/classes/HMSAudioMixingMode.d.ts +5 -0
  69. package/lib/typescript/classes/HMSAudioMode.d.ts +7 -0
  70. package/lib/typescript/classes/HMSEncoder.d.ts +2 -0
  71. package/lib/typescript/classes/HMSException.d.ts +8 -14
  72. package/lib/typescript/classes/HMSHLSConfig.d.ts +2 -2
  73. package/lib/typescript/classes/HMSLogger.d.ts +1 -1
  74. package/lib/typescript/classes/HMSPermissions.d.ts +6 -4
  75. package/lib/typescript/classes/HMSSDK.d.ts +112 -12
  76. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
  77. package/lib/typescript/index.d.ts +3 -0
  78. package/package.json +1 -19
  79. package/react-native-hms.podspec +2 -1
  80. package/src/classes/HMSAudioDevice.ts +7 -0
  81. package/src/classes/HMSAudioMixingMode.ts +5 -0
  82. package/src/classes/HMSAudioMode.ts +7 -0
  83. package/src/classes/HMSEncoder.ts +12 -0
  84. package/src/classes/HMSException.ts +15 -24
  85. package/src/classes/HMSHLSConfig.ts +2 -2
  86. package/src/classes/HMSLogger.ts +2 -2
  87. package/src/classes/HMSPermissions.ts +9 -6
  88. package/src/classes/HMSSDK.tsx +352 -67
  89. package/src/classes/HMSUpdateListenerActions.ts +1 -0
  90. package/src/index.ts +3 -0
  91. package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m97_aar.xml +0 -11
@@ -15,6 +15,7 @@ import com.facebook.react.bridge.ReadableMap
15
15
  import com.facebook.react.uimanager.events.RCTEventEmitter
16
16
  import java.io.ByteArrayOutputStream
17
17
  import java.util.*
18
+ import live.hms.video.audio.HMSAudioManager
18
19
  import live.hms.video.error.HMSException
19
20
  import live.hms.video.media.codec.HMSAudioCodec
20
21
  import live.hms.video.media.codec.HMSVideoCodec
@@ -23,6 +24,7 @@ import live.hms.video.media.tracks.HMSRemoteAudioTrack
23
24
  import live.hms.video.media.tracks.HMSRemoteVideoTrack
24
25
  import live.hms.video.media.tracks.HMSTrack
25
26
  import live.hms.video.sdk.models.*
27
+ import live.hms.video.sdk.models.enums.AudioMixingMode
26
28
  import live.hms.video.sdk.models.role.HMSRole
27
29
  import live.hms.video.utils.HmsUtilities
28
30
  import org.webrtc.SurfaceViewRenderer
@@ -248,6 +250,21 @@ object HMSHelper {
248
250
  }
249
251
  }
250
252
 
253
+ fun getAudioMixingMode(audioMixingMode: String?): AudioMixingMode {
254
+ when (audioMixingMode) {
255
+ "TALK_ONLY" -> {
256
+ return AudioMixingMode.TALK_ONLY
257
+ }
258
+ "MUSIC_ONLY" -> {
259
+ return AudioMixingMode.MUSIC_ONLY
260
+ }
261
+ "TALK_AND_MUSIC" -> {
262
+ return AudioMixingMode.TALK_AND_MUSIC
263
+ }
264
+ }
265
+ return AudioMixingMode.TALK_AND_MUSIC
266
+ }
267
+
251
268
  private fun getAudioCodec(codecString: String?): HMSAudioCodec {
252
269
  when (codecString) {
253
270
  "opus" -> {
@@ -304,7 +321,25 @@ object HMSHelper {
304
321
  return rtmpURLs
305
322
  }
306
323
 
307
- fun getHMSHLSMeetingURLVariants(
324
+ fun getHLSConfig(data: ReadableMap?): HMSHLSConfig? {
325
+ if (data === null) {
326
+ return data
327
+ }
328
+ var hlsMeetingUrlVariant: List<HMSHLSMeetingURLVariant>? = null
329
+ if (areAllRequiredKeysAvailable(data, arrayOf(Pair("meetingURLVariants", "Array")))) {
330
+ val meetingURLVariants =
331
+ data.getArray("meetingURLVariants")?.toArrayList() as? ArrayList<HashMap<String, String>>
332
+ hlsMeetingUrlVariant = getHMSHLSMeetingURLVariants(meetingURLVariants)
333
+ }
334
+ var hlsRecordingConfig: HMSHlsRecordingConfig? = null
335
+ if (areAllRequiredKeysAvailable(data, arrayOf(Pair("hlsRecordingConfig", "Map")))) {
336
+ val recordingConfig = data.getMap("hlsRecordingConfig")
337
+ hlsRecordingConfig = getHlsRecordingConfig(recordingConfig)
338
+ }
339
+ return HMSHLSConfig(hlsMeetingUrlVariant, hlsRecordingConfig)
340
+ }
341
+
342
+ private fun getHMSHLSMeetingURLVariants(
308
343
  hmsMeetingURLVariants: ArrayList<HashMap<String, String>>?
309
344
  ): List<HMSHLSMeetingURLVariant> {
310
345
  val meetingURLVariants = mutableListOf<HMSHLSMeetingURLVariant>()
@@ -317,28 +352,25 @@ object HMSHelper {
317
352
  return meetingURLVariants
318
353
  }
319
354
 
320
- fun getHlsRecordingConfig(data: ReadableMap): HMSHlsRecordingConfig? {
321
- if (areAllRequiredKeysAvailable(data, arrayOf(Pair("hlsRecordingConfig", "Map")))) {
322
- val hmsHlsRecordingConfig = data.getMap("hlsRecordingConfig")
323
- if (hmsHlsRecordingConfig != null) {
324
- var singleFilePerLayer = false
325
- var videoOnDemand = false
326
- if (areAllRequiredKeysAvailable(
327
- hmsHlsRecordingConfig,
328
- arrayOf(Pair("singleFilePerLayer", "Boolean"))
329
- )
330
- ) {
331
- singleFilePerLayer = hmsHlsRecordingConfig.getBoolean("singleFilePerLayer")
332
- }
333
- if (areAllRequiredKeysAvailable(
334
- hmsHlsRecordingConfig,
335
- arrayOf(Pair("videoOnDemand", "Boolean"))
336
- )
337
- ) {
338
- videoOnDemand = hmsHlsRecordingConfig.getBoolean("videoOnDemand")
339
- }
340
- return HMSHlsRecordingConfig(singleFilePerLayer, videoOnDemand)
355
+ private fun getHlsRecordingConfig(hmsHlsRecordingConfig: ReadableMap?): HMSHlsRecordingConfig? {
356
+ if (hmsHlsRecordingConfig !== null) {
357
+ var singleFilePerLayer = false
358
+ var videoOnDemand = false
359
+ if (areAllRequiredKeysAvailable(
360
+ hmsHlsRecordingConfig,
361
+ arrayOf(Pair("singleFilePerLayer", "Boolean"))
362
+ )
363
+ ) {
364
+ singleFilePerLayer = hmsHlsRecordingConfig.getBoolean("singleFilePerLayer")
341
365
  }
366
+ if (areAllRequiredKeysAvailable(
367
+ hmsHlsRecordingConfig,
368
+ arrayOf(Pair("videoOnDemand", "Boolean"))
369
+ )
370
+ ) {
371
+ videoOnDemand = hmsHlsRecordingConfig.getBoolean("videoOnDemand")
372
+ }
373
+ return HMSHlsRecordingConfig(singleFilePerLayer, videoOnDemand)
342
374
  }
343
375
  return null
344
376
  }
@@ -542,4 +574,45 @@ object HMSHelper {
542
574
  reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(id, "captureFrame", output)
543
575
  }
544
576
  }
577
+
578
+ fun getAudioDevicesList(audioDevicesList: List<HMSAudioManager.AudioDevice>?): ReadableArray {
579
+ val hmsAudioDevicesList = Arguments.createArray()
580
+ if (audioDevicesList != null) {
581
+ for (audioDevice in audioDevicesList) {
582
+ hmsAudioDevicesList.pushString(audioDevice.name)
583
+ }
584
+ }
585
+ return hmsAudioDevicesList
586
+ }
587
+
588
+ fun getAudioDevicesSet(audioDevicesSet: Set<HMSAudioManager.AudioDevice>?): ReadableArray {
589
+ val hmsAudioDevicesSet = Arguments.createArray()
590
+ if (audioDevicesSet != null) {
591
+ for (audioDevice in audioDevicesSet) {
592
+ hmsAudioDevicesSet.pushString(audioDevice.name)
593
+ }
594
+ }
595
+ return hmsAudioDevicesSet
596
+ }
597
+
598
+ fun getAudioDevice(audioDevice: String?): HMSAudioManager.AudioDevice {
599
+ when (audioDevice) {
600
+ "AUTOMATIC" -> {
601
+ return HMSAudioManager.AudioDevice.AUTOMATIC
602
+ }
603
+ "BLUETOOTH" -> {
604
+ return HMSAudioManager.AudioDevice.BLUETOOTH
605
+ }
606
+ "EARPIECE" -> {
607
+ return HMSAudioManager.AudioDevice.EARPIECE
608
+ }
609
+ "SPEAKER_PHONE" -> {
610
+ return HMSAudioManager.AudioDevice.SPEAKER_PHONE
611
+ }
612
+ "WIRED_HEADSET" -> {
613
+ return HMSAudioManager.AudioDevice.WIRED_HEADSET
614
+ }
615
+ }
616
+ return HMSAudioManager.AudioDevice.SPEAKER_PHONE
617
+ }
545
618
  }
@@ -202,10 +202,10 @@ class HMSManager(reactContext: ReactApplicationContext) :
202
202
  }
203
203
 
204
204
  @ReactMethod
205
- fun remoteMuteAllAudio(data: ReadableMap) {
205
+ fun remoteMuteAllAudio(data: ReadableMap, callback: Promise?) {
206
206
  val hms = HMSHelper.getHms(data, hmsCollection)
207
207
 
208
- hms?.remoteMuteAllAudio()
208
+ hms?.remoteMuteAllAudio(callback)
209
209
  }
210
210
 
211
211
  @ReactMethod
@@ -238,6 +238,43 @@ class HMSManager(reactContext: ReactApplicationContext) :
238
238
  hms?.stopScreenshare(callback)
239
239
  }
240
240
 
241
+ @ReactMethod
242
+ fun startAudioshare(data: ReadableMap, callback: Promise?) {
243
+ currentActivity?.application?.registerActivityLifecycleCallbacks(this)
244
+ val hms = HMSHelper.getHms(data, hmsCollection)
245
+
246
+ hms?.startAudioshare(data, callback)
247
+ }
248
+
249
+ @ReactMethod
250
+ fun isAudioShared(data: ReadableMap, callback: Promise?) {
251
+ val hms = HMSHelper.getHms(data, hmsCollection)
252
+
253
+ hms?.isAudioShared(callback)
254
+ }
255
+
256
+ @ReactMethod
257
+ fun stopAudioshare(data: ReadableMap, callback: Promise?) {
258
+ val hms = HMSHelper.getHms(data, hmsCollection)
259
+
260
+ currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
261
+ hms?.stopAudioshare(callback)
262
+ }
263
+
264
+ @ReactMethod
265
+ fun getAudioMixingMode(data: ReadableMap, callback: Promise?) {
266
+ val hms = HMSHelper.getHms(data, hmsCollection)
267
+
268
+ callback?.resolve(hms?.getAudioMixingMode()?.name)
269
+ }
270
+
271
+ @ReactMethod
272
+ fun setAudioMixingMode(data: ReadableMap, callback: Promise?) {
273
+ val hms = HMSHelper.getHms(data, hmsCollection)
274
+
275
+ hms?.setAudioMixingMode(data, callback)
276
+ }
277
+
241
278
  @ReactMethod
242
279
  fun startRTMPOrRecording(data: ReadableMap, callback: Promise?) {
243
280
  val hms = HMSHelper.getHms(data, hmsCollection)
@@ -290,6 +327,55 @@ class HMSManager(reactContext: ReactApplicationContext) :
290
327
  callback?.resolve(result)
291
328
  }
292
329
 
330
+ @ReactMethod
331
+ fun enableRTCStats(data: ReadableMap) {
332
+ val hms = HMSHelper.getHms(data, hmsCollection)
333
+
334
+ hms?.enableRTCStats()
335
+ }
336
+
337
+ @ReactMethod
338
+ fun disableRTCStats(data: ReadableMap) {
339
+ val hms = HMSHelper.getHms(data, hmsCollection)
340
+
341
+ hms?.disableRTCStats()
342
+ }
343
+
344
+ @ReactMethod
345
+ fun getAudioDevicesList(data: ReadableMap, callback: Promise?) {
346
+ val hms = HMSHelper.getHms(data, hmsCollection)
347
+
348
+ hms?.getAudioDevicesList(callback)
349
+ }
350
+
351
+ @ReactMethod
352
+ fun getAudioOutputRouteType(data: ReadableMap, callback: Promise?) {
353
+ val hms = HMSHelper.getHms(data, hmsCollection)
354
+
355
+ hms?.getAudioOutputRouteType(callback)
356
+ }
357
+
358
+ @ReactMethod
359
+ fun switchAudioOutput(data: ReadableMap) {
360
+ val hms = HMSHelper.getHms(data, hmsCollection)
361
+
362
+ hms?.switchAudioOutput(data)
363
+ }
364
+
365
+ @ReactMethod
366
+ fun setAudioMode(data: ReadableMap) {
367
+ val hms = HMSHelper.getHms(data, hmsCollection)
368
+
369
+ hms?.setAudioMode(data)
370
+ }
371
+
372
+ @ReactMethod
373
+ fun setAudioDeviceChangeListener(data: ReadableMap) {
374
+ val hms = HMSHelper.getHms(data, hmsCollection)
375
+
376
+ hms?.setAudioDeviceChangeListener()
377
+ }
378
+
293
379
  fun emitEvent(event: String, data: WritableMap) {
294
380
  reactApplicationContext
295
381
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)