Skip to content

Commit 54c57c1

Browse files
xanderzhao-zbAbySwifter
authored andcommitted
【TUILiveKit】【Android】run demo bugfix
1 parent bdccf9a commit 54c57c1

5 files changed

Lines changed: 39 additions & 13 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
.DS_Store
22
**/.DS_Store
3+
live/tuilivekit/.gradle/
4+
room/tuiroomkit/.gradle/

application/assembly/src/main/java/com/tencent/rtcube/modules/voiceroom/karaoke/OnlineMusicService.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,11 @@ class OnlineMusicService : MusicCatalogService() {
126126
onSuccess: (JSONObject) -> Unit,
127127
onFailure: (Int, String?) -> Unit,
128128
) {
129+
if (!url.startsWith("http://") && !url.startsWith("https://")) {
130+
Log.e(TAG, "request failed: invalid url=$url, httpBaseUrl not configured")
131+
mainHandler.post { onFailure(ERR_INVALID_URL, "invalid url: $url") }
132+
return
133+
}
129134
val req = Request.Builder()
130135
.url(url)
131136
.post(body.toString().toRequestBody(JSON_MEDIA_TYPE))
@@ -220,6 +225,7 @@ class OnlineMusicService : MusicCatalogService() {
220225
private const val ERR_DATA_NULL = -1
221226
private const val ERR_RESPONSE_INVALID = -2
222227
private const val ERR_NETWORK_FAILURE = -3
228+
private const val ERR_INVALID_URL = -4
223229

224230
@Volatile
225231
private var licenseKey: String = ""

live/tuilivekit/src/main/java/com/trtc/uikit/livekit/features/audienceview/AudienceView.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.trtc.uikit.livekit.features.audienceview
22

3+
import android.app.Activity
34
import android.content.Context
45
import android.content.res.Configuration
6+
import android.text.TextUtils
57
import android.util.AttributeSet
68
import android.view.View
79
import android.widget.FrameLayout
@@ -10,6 +12,7 @@ import com.tencent.qcloud.tuicore.TUICore
1012
import com.tencent.qcloud.tuicore.interfaces.ITUINotification
1113
import com.trtc.uikit.livekit.common.EVENT_KEY_LIVE_KIT
1214
import com.trtc.uikit.livekit.common.EVENT_PARAMS_IS_LINKING
15+
import com.trtc.uikit.livekit.common.EVENT_SUB_KEY_DESTROY_LIVE_VIEW
1316
import com.trtc.uikit.livekit.common.EVENT_SUB_KEY_LINK_STATUS_CHANGE
1417
import com.trtc.uikit.livekit.common.LiveKitLogger
1518
import com.trtc.uikit.livekit.features.audienceview.store.access.TUILiveListDataSource
@@ -19,6 +22,7 @@ import com.trtc.uikit.livekit.features.audienceview.store.LiveInfoListStore
1922
import com.trtc.uikit.livekit.features.audienceview.view.liveListviewpager.LiveListViewPager
2023
import com.trtc.uikit.livekit.features.audienceview.view.liveListviewpager.LiveListViewPagerAdapter
2124
import io.trtc.tuikit.atomicxcore.api.live.LiveInfo
25+
import io.trtc.tuikit.atomicxcore.api.live.LiveListStore
2226
import io.trtc.tuikit.atomicxcore.api.live.SeatLayoutTemplate
2327
import java.lang.ref.WeakReference
2428
import java.util.concurrent.CopyOnWriteArrayList
@@ -147,11 +151,13 @@ class AudienceView @JvmOverloads constructor(
147151
override fun onAttachedToWindow() {
148152
super.onAttachedToWindow()
149153
TUICore.registerEvent(EVENT_KEY_LIVE_KIT, EVENT_SUB_KEY_LINK_STATUS_CHANGE, this)
154+
TUICore.registerEvent(EVENT_KEY_LIVE_KIT, EVENT_SUB_KEY_DESTROY_LIVE_VIEW, this)
150155
}
151156

152157
override fun onDetachedFromWindow() {
153158
super.onDetachedFromWindow()
154159
TUICore.unRegisterEvent(EVENT_KEY_LIVE_KIT, EVENT_SUB_KEY_LINK_STATUS_CHANGE, this)
160+
TUICore.unRegisterEvent(EVENT_KEY_LIVE_KIT, EVENT_SUB_KEY_DESTROY_LIVE_VIEW, this)
155161
audienceLiveView?.leaveRoom()
156162
}
157163

@@ -176,6 +182,17 @@ class AudienceView @JvmOverloads constructor(
176182
if (EVENT_SUB_KEY_LINK_STATUS_CHANGE == subKey) {
177183
onLinkStatusChanged(param)
178184
}
185+
if (TextUtils.equals(key, EVENT_KEY_LIVE_KIT) && EVENT_SUB_KEY_DESTROY_LIVE_VIEW == subKey) {
186+
if (context is Activity) {
187+
val activity = context as Activity
188+
if (activity.isFinishing || activity.isDestroyed) {
189+
return
190+
}
191+
val liveInfo = LiveListStore.shared().liveState.currentLive.value
192+
destroy()
193+
notifyListeners { it.onClickCloseButton(liveInfo) }
194+
}
195+
}
179196
}
180197

181198
fun destroy() {

live/tuilivekit/src/main/java/com/trtc/uikit/livekit/features/audienceview/AudienceViewDefine.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ object AudienceViewDefine {
77
interface AudienceViewListener {
88
fun onLiveEnded(roomId: String, ownerName: String, ownerAvatarUrl: String)
99
fun onClickFloatWindow()
10-
10+
fun onClickCloseButton(liveInfo: LiveInfo)
1111
fun onCreateLiveView(audienceView: AudienceLiveView, liveInfo: LiveInfo) {}
1212

1313
fun onLiveViewDidAppear(audienceView: AudienceLiveView, liveInfo: LiveInfo) {}

live/tuilivekit/src/main/java/com/trtc/uikit/livekit/livestream/VideoLiveAudienceActivity.kt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@ import com.tencent.cloud.tuikit.engine.common.ContextProvider
1818
import com.tencent.qcloud.tuicore.TUICore
1919
import com.tencent.qcloud.tuicore.interfaces.ITUINotification
2020
import com.trtc.uikit.livekit.R
21-
import com.trtc.uikit.livekit.common.EVENT_KEY_LIVE_KIT
22-
import com.trtc.uikit.livekit.common.EVENT_SUB_KEY_DESTROY_LIVE_VIEW
2321
import com.trtc.uikit.livekit.common.LiveKitLogger
2422
import com.trtc.uikit.livekit.common.PermissionRequest
2523
import com.trtc.uikit.livekit.component.pippanel.PIPPanelStore
24+
import com.trtc.uikit.livekit.component.pippanel.PictureInPictureStore
2625
import com.trtc.uikit.livekit.features.audienceview.AudienceView
2726
import com.trtc.uikit.livekit.features.audienceview.AudienceViewDefine.AudienceViewListener
2827
import com.trtc.uikit.livekit.features.endstatistics.AudienceEndStatisticsView
@@ -31,8 +30,8 @@ import com.trtc.uikit.livekit.livestream.impl.LiveInfoUtils
3130
import com.trtc.uikit.livekit.livestream.impl.VideoLiveKitImpl
3231
import io.trtc.tuikit.atomicx.common.FullScreenActivity
3332
import io.trtc.tuikit.atomicx.common.foregroundservice.VideoForegroundService
34-
import com.trtc.uikit.livekit.component.pippanel.PictureInPictureStore
3533
import io.trtc.tuikit.atomicx.widget.basicwidget.popover.AtomicPopover
34+
import io.trtc.tuikit.atomicxcore.api.live.LiveInfo
3635
import io.trtc.tuikit.atomicxcore.api.live.LiveListStore
3736
import io.trtc.tuikit.atomicxcore.api.login.LoginStatus
3837
import io.trtc.tuikit.atomicxcore.api.login.LoginStore
@@ -79,15 +78,14 @@ class VideoLiveAudienceActivity : FullScreenActivity(),
7978

8079
layoutContainer = findViewById(R.id.fl_container)
8180
val liveInfo = LiveInfoUtils.convertBundleToLiveInfo(liveBundle)
82-
81+
8382
audienceView = AudienceView(this).apply {
8483
init(this@VideoLiveAudienceActivity, liveInfo.liveID)
8584
addListener(this@VideoLiveAudienceActivity)
8685
}
87-
86+
8887
layoutContainer.addView(audienceView)
8988
VideoLiveKitImpl.createInstance(applicationContext).addCallingAPIListener(this)
90-
TUICore.registerEvent(EVENT_KEY_LIVE_KIT, EVENT_SUB_KEY_DESTROY_LIVE_VIEW, this)
9189
lifecycleScope.launchWhenStarted {
9290
launch {
9391
PermissionRequest.requestCompleteEvent.collect {
@@ -120,16 +118,13 @@ class VideoLiveAudienceActivity : FullScreenActivity(),
120118
TextUtils.equals(key, KEY_EXTENSION_NAME) && TextUtils.equals(subKey, NOTIFY_START_ACTIVITY) -> {
121119
val intent = param?.get("intent") as? Intent
122120
val requestCode = param?.get("requestCode") as? Int
123-
121+
124122
if (requestCode != null && intent != null) {
125123
startActivityForResult(intent, requestCode)
126124
} else if (intent != null) {
127125
startActivity(intent)
128126
}
129127
}
130-
TextUtils.equals(key, EVENT_KEY_LIVE_KIT) && EVENT_SUB_KEY_DESTROY_LIVE_VIEW == subKey -> {
131-
destroyAudienceView()
132-
}
133128
}
134129
}
135130

@@ -146,6 +141,7 @@ class VideoLiveAudienceActivity : FullScreenActivity(),
146141
}
147142

148143
override fun onDestroy() {
144+
AtomicPopover.dismissAll()
149145
super.onDestroy()
150146
BackgroundLaunchDetector.unregisterActivityLifecycleCallbacks(application, "VideoLiveAudienceActivity")
151147
PIPPanelStore.sharedInstance().reset()
@@ -167,6 +163,7 @@ class VideoLiveAudienceActivity : FullScreenActivity(),
167163
TUICore.callService(KEY_EXTENSION_NAME, METHOD_ACTIVITY_RESULT, param)
168164
}
169165

166+
@Suppress("MissingSuperCall")
170167
override fun onBackPressed() {
171168
// Do nothing
172169
}
@@ -207,7 +204,7 @@ class VideoLiveAudienceActivity : FullScreenActivity(),
207204
}
208205
audienceView?.enablePictureInPictureMode(isInPictureInPictureMode)
209206
audienceEndStatisticsView?.enablePipMode(isInPictureInPictureMode)
210-
207+
211208
if (!isInPictureInPictureMode && lifecycle.currentState == Lifecycle.State.CREATED
212209
&& PictureInPictureStore.shared.hasPipPermission(this)) {
213210
destroyAudienceView()
@@ -245,7 +242,7 @@ class VideoLiveAudienceActivity : FullScreenActivity(),
245242
}
246243
})
247244
}
248-
245+
249246
layoutContainer.removeAllViews()
250247
layoutContainer.addView(audienceEndStatisticsView)
251248
}
@@ -258,6 +255,10 @@ class VideoLiveAudienceActivity : FullScreenActivity(),
258255
}
259256
}
260257

258+
override fun onClickCloseButton(liveInfo: LiveInfo) {
259+
finishAndRemoveTask()
260+
}
261+
261262
private fun destroyAudienceView() {
262263
if (isFinishing || isDestroyed) {
263264
return

0 commit comments

Comments
 (0)