Skip to content

Commit ba1dc21

Browse files
Merge pull request #650 from 100mslive/dev
release 1.1.94
2 parents 482b0e2 + 13b60ba commit ba1dc21

24 files changed

+427
-96
lines changed

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ kotlin.code.style=official
2222
100MS_APP_VERSION_CODE=643
2323
100MS_APP_VERSION_NAME=5.8.872
2424
hmsRoomKitGroup=live.100ms
25-
HMS_ROOM_KIT_VERSION=1.1.94
25+
HMS_ROOM_KIT_VERSION=1.1.95
2626
android.suppressUnsupportedCompileSdk=33

room-kit/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ dependencies {
7272
implementation 'com.google.android.material:material:1.10.0'
7373
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
7474
implementation 'androidx.percentlayout:percentlayout:1.0.0'
75-
def hmsVersion = "2.9.1"
75+
def hmsVersion = "2.9.4"
7676
implementation "com.otaliastudios:zoomlayout:1.9.0"
7777
// To add dependencies of specific module
7878
implementation "live.100ms:android-sdk:$hmsVersion"

room-kit/src/main/java/live/hms/roomkit/ui/meeting/HlsVideoQualitySelectorBottomSheet.kt

+21-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import android.view.View
88
import android.view.ViewGroup
99
import android.widget.RadioButton
1010
import android.widget.TextView
11+
import androidx.core.os.bundleOf
12+
import androidx.fragment.app.activityViewModels
1113
import com.google.android.material.bottomsheet.BottomSheetBehavior
1214
import com.google.android.material.bottomsheet.BottomSheetDialog
1315
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
@@ -16,17 +18,27 @@ import live.hms.roomkit.databinding.DialogTrackSelectionBinding
1618
import live.hms.roomkit.util.viewLifecycle
1719
import live.hms.hls_player.HmsHlsPlayer
1820
import live.hms.hls_player.HmsHlsLayer
21+
import live.hms.roomkit.ui.meeting.videogrid.VideoGridPageFragment
1922
import live.hms.roomkit.ui.theme.HMSPrebuiltTheme
2023
import live.hms.roomkit.ui.theme.getColorOrDefault
2124
import live.hms.roomkit.ui.theme.trackTintList
2225

2326

2427
class HlsVideoQualitySelectorBottomSheet(
25-
private val hlsPlayer: HmsHlsPlayer
2628
) : BottomSheetDialogFragment() {
2729

2830
private var binding by viewLifecycle<DialogTrackSelectionBinding>()
2931

32+
val viewModel by activityViewModels<MeetingViewModel>()
33+
companion object {
34+
fun newInstance(): HlsVideoQualitySelectorBottomSheet {
35+
return HlsVideoQualitySelectorBottomSheet().apply {
36+
}
37+
}
38+
39+
}
40+
41+
3042
override fun onCreateView(
3143
inflater: LayoutInflater,
3244
container: ViewGroup?,
@@ -68,19 +80,22 @@ class HlsVideoQualitySelectorBottomSheet(
6880
val sheet = it as BottomSheetDialog
6981
sheet.behavior.state = BottomSheetBehavior.STATE_EXPANDED
7082
}
83+
84+
if (viewModel.getHLSPLayer() == null)
85+
dismissAllowingStateLoss()
7186
binding.closeBtn.setOnClickListener {
7287
dismiss()
7388
}
74-
val currentLayer = hlsPlayer.getCurrentHmsHlsLayer()
75-
val allLayers = hlsPlayer.getHmsHlsLayers()
89+
val currentLayer = viewModel.getHLSPLayer()?.getCurrentHmsHlsLayer()
90+
val allLayers = viewModel.getHLSPLayer()?.getHmsHlsLayers()
7691

7792
addAutoView(currentLayer == HmsHlsLayer.AUTO)
78-
allLayers.forEachIndexed { index, layer ->
93+
allLayers?.forEachIndexed { index, layer ->
7994
when(layer) {
8095
is HmsHlsLayer.AUTO -> {}
8196
is HmsHlsLayer.LayerInfo -> {
8297
addTrackView("${layer.resolution.height}", index, currentLayer == layer) {
83-
hlsPlayer.setHmsHlsLayer(layer)
98+
viewModel.getHLSPLayer()?.setHmsHlsLayer(layer)
8499
dismissAllowingStateLoss()
85100
}
86101
}
@@ -90,7 +105,7 @@ class HlsVideoQualitySelectorBottomSheet(
90105

91106
private fun addAutoView(isSelected : Boolean) {
92107
addTrackView("Auto",-1,isSelected) {
93-
hlsPlayer.setHmsHlsLayer(HmsHlsLayer.AUTO)
108+
viewModel.getHLSPLayer()?.setHmsHlsLayer(HmsHlsLayer.AUTO)
94109
dismissAllowingStateLoss()
95110
}
96111
}

room-kit/src/main/java/live/hms/roomkit/ui/meeting/MeetingFragment.kt

+10-7
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@ class MeetingFragment : Fragment() {
198198
private fun updateActionVolumeMenuIcon(
199199
audioOutputType: HMSAudioManager.AudioDevice? = null
200200
) {
201+
if (meetingViewModel.isPeerAudioEnabled().not()) {
202+
binding.iconOutputDevice.setIconEnabled(R.drawable.ic_volume_off_24)
203+
return
204+
}
201205
binding.iconOutputDevice.apply {
202206
when (audioOutputType) {
203207
HMSAudioManager.AudioDevice.EARPIECE -> {
@@ -996,7 +1000,6 @@ class MeetingFragment : Fragment() {
9961000

9971001
})?.start()
9981002

999-
val screenHeight = requireActivity().window.decorView.height
10001003
binding.bottomControls.animate()
10011004
?.translationY(0f)?.setDuration(300)?.setListener(object : AnimatorListener {
10021005
override fun onAnimationStart(animation: Animator) {
@@ -1027,15 +1030,15 @@ class MeetingFragment : Fragment() {
10271030
with(binding.chatView!!){
10281031
if(up) {
10291032
(layoutParams as RelativeLayout.LayoutParams).apply {
1030-
removeRule(RelativeLayout.ALIGN_BOTTOM)
1031-
addRule(RelativeLayout.ABOVE, R.id.bottom_controls)
1032-
updateMargins(bottom = bottomMenuHeight.toInt() + 8.dp())
1033+
// removeRule(RelativeLayout.ALIGN_BOTTOM)
1034+
// addRule(RelativeLayout.ABOVE, R.id.bottom_controls)
1035+
// updateMargins(bottom = bottomMenuHeight.toInt().let { if(it == 0) 130 else it } + 8.dp())
10331036
}
10341037
} else {
10351038
(layoutParams as RelativeLayout.LayoutParams).apply {
1036-
removeRule(RelativeLayout.ABOVE)
1037-
addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, R.id.meeting_container)
1038-
updateMargins(bottom = 8.dp())
1039+
// removeRule(RelativeLayout.ABOVE)
1040+
// addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, R.id.meeting_container)
1041+
// updateMargins(bottom = 8.dp())
10391042
}
10401043
}
10411044
}

room-kit/src/main/java/live/hms/roomkit/ui/meeting/MeetingViewModel.kt

+15-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import kotlinx.coroutines.flow.Flow
1212
import kotlinx.coroutines.flow.MutableSharedFlow
1313
import kotlinx.coroutines.flow.SharedFlow
1414
import kotlinx.coroutines.launch
15+
import live.hms.hls_player.HmsHlsPlayer
1516
import live.hms.roomkit.R
1617
import live.hms.roomkit.ui.HMSPrebuiltOptions
1718
import live.hms.roomkit.ui.meeting.activespeaker.ActiveSpeakerHandler
@@ -698,9 +699,7 @@ class MeetingViewModel(
698699
addRTCStatsObserver()
699700
}
700701

701-
if (!(state.value is MeetingState.Disconnected || state.value is MeetingState.Failure || state.value is MeetingState.NonFatalFailure)) {
702-
error("Cannot start meeting in ${state.value} state")
703-
}
702+
704703

705704
cleanup()
706705

@@ -1243,6 +1242,7 @@ class MeetingViewModel(
12431242
}
12441243
}
12451244

1245+
val showDvrControls = MutableLiveData<Boolean>()
12461246
val showAudioIcon : MutableLiveData<Boolean> = MutableLiveData(false)
12471247
val showHlsStreamYetToStartError = MutableLiveData<Boolean>(false)
12481248
private fun switchToHlsViewIfRequired(role: HMSRole?, streamUrl: String?) {
@@ -1282,6 +1282,7 @@ class MeetingViewModel(
12821282
fun switchToHlsViewIfRequired() {
12831283
// get the hls URL from the Room, if it exists
12841284
val hlsUrl = hmsSDK.getRoom()?.hlsStreamingState?.variants?.get(0)?.hlsStreamUrl
1285+
showDvrControls.postValue(hmsSDK.getRoom()?.hlsStreamingState?.variants?.get(0)?.playlistType == HMSHLSPlaylistType.dvr)
12851286
switchToHlsViewIfRequired(hmsSDK.getLocalPeer()?.hmsRole, hlsUrl)
12861287
}
12871288

@@ -2407,6 +2408,17 @@ class MeetingViewModel(
24072408
val getQuestionStartTime = questionTimingUseCase::getQuestionStartTime
24082409

24092410
fun getLogo() = getHmsRoomLayout()?.data?.getOrNull(0)?.logo?.url
2411+
2412+
var hmsPlayer : HmsHlsPlayer? = null
2413+
fun setHLSPlayer(player: HmsHlsPlayer) {
2414+
hmsPlayer = player
2415+
}
2416+
2417+
fun getHLSPLayer() = hmsPlayer
2418+
2419+
fun getLiveStreamingHeaderTitle(): String?{
2420+
return prebuiltInfoContainer.getLiveStreamingHeaderTitle()
2421+
}
24102422
//fun getHeader() = getHmsRoomLayout()?.data?.getOrNull(0)?.screens?.conferencing?.hlsLiveStreaming?.elements?.participantList
24112423
}
24122424

room-kit/src/main/java/live/hms/roomkit/ui/meeting/PrebuiltInfoContainer.kt

+12
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,18 @@ class PrebuiltInfoContainer(private val hmssdk: HMSSDK) {
128128
fun shouldSkipPreview(): Boolean {
129129
return hmsRoomLayout?.data?.get(0)?.screens?.preview?.skipPreview == true
130130
}
131+
132+
fun getLiveStreamingHeaderTitle() : String? {
133+
val localPeer = hmssdk.getLocalPeer()
134+
135+
return if (localPeer == null) {
136+
hmsRoomLayout?.data?.get(0)?.screens?.conferencing?.hlsLiveStreaming?.elements
137+
?.hlsLiveStreamingHeader?.title
138+
} else {
139+
roleMap[localPeer.hmsRole.name]?.screens?.conferencing?.hlsLiveStreaming?.elements
140+
?.hlsLiveStreamingHeader?.title
141+
}
142+
}
131143
}
132144

133145
data class AllowedToMessageParticipants(

0 commit comments

Comments
 (0)