Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
livekitAndroidXuningTest
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
David Zhao
2021-05-23 23:43:44 -0700
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
170ff987b4a88439a5cee21d4b0bd2ecaa3dcea1
170ff987
1 parent
018fbc80
Support setting autosubscribe to false, refactored ConnectOptions
隐藏空白字符变更
内嵌
并排对比
正在显示
11 个修改的文件
包含
48 行增加
和
35 行删除
.idea/compiler.xml
build.gradle
livekit-android-sdk/build.gradle
livekit-android-sdk/src/main/java/io/livekit/android/ConnectOptions.kt
livekit-android-sdk/src/main/java/io/livekit/android/LiveKit.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/Room.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCClient.kt → livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/RemoteParticipant.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/RemoteTrackPublication.kt
livekit-android-sdk/src/test/java/io/livekit/android/room/participant/RemoteParticipantTest.kt
.idea/compiler.xml
查看文件 @
170ff98
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"CompilerConfiguration"
>
<bytecodeTargetLevel
target=
"1
1
"
/>
<bytecodeTargetLevel
target=
"1
2
"
/>
</component>
</project>
\ No newline at end of file
...
...
build.gradle
查看文件 @
170ff98
...
...
@@ -11,7 +11,7 @@ buildscript {
}
dependencies
{
classpath
'com.android.tools.build:gradle:7.0.0-
alpha15
'
classpath
'com.android.tools.build:gradle:7.0.0-
beta02
'
classpath
"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath
"org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
classpath
"org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version"
...
...
livekit-android-sdk/build.gradle
查看文件 @
170ff98
...
...
@@ -15,8 +15,6 @@ android {
defaultConfig
{
minSdkVersion
21
targetSdkVersion
30
versionCode
1
versionName
VERSION_NAME
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles
'consumer-rules.pro'
...
...
livekit-android-sdk/src/main/java/io/livekit/android/ConnectOptions.kt
查看文件 @
170ff98
package io.livekit.android
data class ConnectOptions(
val placeholder: Unit = Unit
)
\ No newline at end of file
class ConnectOptions(
var autoSubscribe: Boolean = true
) {
internal var reconnect: Boolean = false
}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/LiveKit.kt
查看文件 @
170ff98
...
...
@@ -16,7 +16,7 @@ class LiveKit {
appContext: Context,
url: String,
token: String,
options: ConnectOptions,
options: ConnectOptions
?
,
listener: RoomListener?
): Room {
val ctx = appContext.applicationContext
...
...
@@ -25,9 +25,9 @@ class LiveKit {
.create(ctx)
val room = component.roomFactory()
.create(
options,
ctx)
.create(ctx)
room.listener = listener
room.connect(url, token)
room.connect(url, token
, options
)
return room
}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt
查看文件 @
170ff98
package io.livekit.android.room
import com.github.ajalt.timberkt.Timber
import io.livekit.android.ConnectOptions
import io.livekit.android.dagger.InjectionNames
import io.livekit.android.room.track.TrackException
import io.livekit.android.room.util.*
...
...
@@ -27,10 +28,10 @@ import kotlin.coroutines.suspendCoroutine
class RTCEngine
@Inject
constructor(
val client:
RTC
Client,
val client:
Signal
Client,
private val pctFactory: PeerConnectionTransport.Factory,
@Named(InjectionNames.DISPATCHER_IO) ioDispatcher: CoroutineDispatcher,
) :
RTC
Client.Listener, DataChannel.Observer {
) :
Signal
Client.Listener, DataChannel.Observer {
var listener: Listener? = null
internal var iceState: IceState = IceState.DISCONNECTED
set(value) {
...
...
@@ -74,10 +75,10 @@ constructor(
client.listener = this
}
fun join(url: String, token: String) {
fun join(url: String, token: String
, options: ConnectOptions?
) {
sessionUrl = url
sessionToken = token
client.join(url, token)
client.join(url, token
, options
)
}
suspend fun addTrack(cid: String, name: String, kind: LivekitModels.TrackType): LivekitModels.TrackInfo {
...
...
@@ -123,7 +124,9 @@ constructor(
coroutineScope.launch {
delay(startDelay)
if (iceState != IceState.DISCONNECTED && sessionUrl != null && sessionToken != null) {
client.join(sessionUrl!!, sessionToken!!, true)
val opts = ConnectOptions()
opts.reconnect = true
client.join(sessionUrl!!, sessionToken!!, opts)
}
}
}
...
...
@@ -208,7 +211,7 @@ constructor(
}
if (iceServers.isEmpty()) {
iceServers.addAll(
RTC
Client.DEFAULT_ICE_SERVERS)
iceServers.addAll(
Signal
Client.DEFAULT_ICE_SERVERS)
}
info.iceServersList.forEach {
Timber.e{ "username = \"${it.username}\""}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/Room.kt
查看文件 @
170ff98
...
...
@@ -26,7 +26,6 @@ import kotlin.coroutines.suspendCoroutine
class Room
@AssistedInject
constructor(
@Assisted private val connectOptions: ConnectOptions,
@Assisted private val context: Context,
private val engine: RTCEngine,
private val eglBase: EglBase,
...
...
@@ -65,9 +64,9 @@ constructor(
private var hasLostConnectivity: Boolean = false
private var connectContinuation: Continuation<Unit>? = null
suspend fun connect(url: String, token: String) {
suspend fun connect(url: String, token: String
, options: ConnectOptions?
) {
state = State.CONNECTING
engine.join(url, token)
engine.join(url, token
, options
)
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkRequest = NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
...
...
@@ -180,7 +179,7 @@ constructor(
*/
@AssistedFactory
interface Factory {
fun create(con
nectOptions: ConnectOptions, con
text: Context): Room
fun create(context: Context): Room
}
//------------------------------------- NetworkCallback -------------------------------------//
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/
RTC
Client.kt → livekit-android-sdk/src/main/java/io/livekit/android/room/
Signal
Client.kt
查看文件 @
170ff98
...
...
@@ -2,6 +2,7 @@ package io.livekit.android.room
import com.github.ajalt.timberkt.Timber
import com.google.protobuf.util.JsonFormat
import io.livekit.android.ConnectOptions
import io.livekit.android.dagger.InjectionNames
import io.livekit.android.util.safe
import kotlinx.serialization.decodeFromString
...
...
@@ -25,7 +26,7 @@ import javax.inject.Named
* SignalClient to LiveKit WS servers
* @suppress
*/
class
RTC
Client
class
Signal
Client
@Inject
constructor(
private val websocketFactory: WebSocket.Factory,
...
...
@@ -44,15 +45,25 @@ constructor(
fun join(
url: String,
token: String,
reconnect: Boolean = false
options: ConnectOptions?,
) {
var wsUrlString = "$url/rtc?protocol=$PROTOCOL_VERSION&access_token=$token"
if (reconnect) {
wsUrlString += "&reconnect=1"
isReconnecting = false
if (options != null) {
wsUrlString += "&auto_subscribe="
wsUrlString += if (options.autoSubscribe) {
"1"
} else {
"0"
}
if (options.reconnect) {
wsUrlString += "&reconnect=1"
isReconnecting = true
}
}
Timber.i { "connecting to $wsUrlString" }
isReconnecting = reconnect
isConnected = false
currentWs?.cancel()
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/RemoteParticipant.kt
查看文件 @
170ff98
package io.livekit.android.room.participant
import com.github.ajalt.timberkt.Timber
import io.livekit.android.room.
RTC
Client
import io.livekit.android.room.
Signal
Client
import io.livekit.android.room.track.*
import io.livekit.android.util.CloseableCoroutineScope
import kotlinx.coroutines.SupervisorJob
...
...
@@ -13,14 +13,14 @@ import org.webrtc.MediaStreamTrack
import org.webrtc.VideoTrack
class RemoteParticipant(
val
rtcClient: RTC
Client,
val
signalClient: Signal
Client,
sid: String,
identity: String? = null,
) : Participant(sid, identity) {
/**
* @suppress
*/
constructor(
rtcClient: RTCClient, info: LivekitModels.ParticipantInfo) : this(rtc
Client, info.sid, info.identity) {
constructor(
signalClient: SignalClient, info: LivekitModels.ParticipantInfo) : this(signal
Client, info.sid, info.identity) {
updateFromInfo(info)
}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/RemoteTrackPublication.kt
查看文件 @
170ff98
...
...
@@ -44,7 +44,7 @@ class RemoteTrackPublication(
unsubscribed = !subscribed
val participant = this.participant.get() as? RemoteParticipant ?: return
participant.
rtc
Client.sendUpdateSubscription(sid, !unsubscribed, videoQuality)
participant.
signal
Client.sendUpdateSubscription(sid, !unsubscribed, videoQuality)
}
/**
...
...
@@ -72,6 +72,6 @@ class RemoteTrackPublication(
private fun sendUpdateTrackSettings() {
val participant = this.participant.get() as? RemoteParticipant ?: return
participant.
rtc
Client.sendUpdateTrackSettings(sid, disabled, videoQuality)
participant.
signal
Client.sendUpdateTrackSettings(sid, disabled, videoQuality)
}
}
\ No newline at end of file
...
...
livekit-android-sdk/src/test/java/io/livekit/android/room/participant/RemoteParticipantTest.kt
查看文件 @
170ff98
package io.livekit.android.room.participant
import io.livekit.android.room.
RTC
Client
import io.livekit.android.room.
Signal
Client
import livekit.LivekitModels
import org.junit.Assert.*
import org.junit.Before
...
...
@@ -9,13 +9,13 @@ import org.mockito.Mockito
class RemoteParticipantTest {
lateinit var
rtcClient: RTC
Client
lateinit var
signalClient: Signal
Client
lateinit var participant: RemoteParticipant
@Before
fun setup() {
rtcClient = Mockito.mock(RTCClient::class.java)
participant = RemoteParticipant(rtcClient, "sid")
signalClient = Mockito.mock(SignalClient::class.java)
participant = RemoteParticipant(signalClient, "sid")
}
@Test
...
...
@@ -24,7 +24,7 @@ class RemoteParticipantTest {
.addTracks(TRACK_INFO)
.build()
participant = RemoteParticipant(
rtc
Client, info)
participant = RemoteParticipant(
signal
Client, info)
assertEquals(1, participant.tracks.values.size)
assertNotNull(participant.getTrackPublication(TRACK_INFO.sid))
...
...
请
注册
或
登录
后发表评论