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 Liu
2021-02-23 13:52:26 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
7bc681c31e76db7b328937632db7a95a4b3c82bc
7bc681c3
1 parent
3516ce94
PeerConnectionTransport
隐藏空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
97 行增加
和
5 行删除
livekit-android-sdk/src/main/java/io/livekit/android/room/PeerConnectionTransport.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCClient.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/PeerConnectionTransport.kt
0 → 100644
查看文件 @
7bc681c
package io.livekit.android.room
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import org.webrtc.*
class PeerConnectionTransport
@AssistedInject
constructor(
config: PeerConnection.RTCConfiguration,
listener: PeerConnection.Observer,
@Assisted connectionFactory: PeerConnectionFactory
) {
val peerConnection: PeerConnection = connectionFactory.createPeerConnection(
config,
listener
) ?: throw IllegalStateException("peer connection creation failed?")
val pendingCandidates = mutableListOf<IceCandidate>()
fun addIceCandidate(candidate: IceCandidate) {
if (peerConnection.remoteDescription != null) {
peerConnection.addIceCandidate(candidate)
} else {
pendingCandidates.add(candidate)
}
}
fun setRemoteDescription(sd: SessionDescription) {
peerConnection.setRemoteDescription(object : SdpObserver {
override fun onCreateSuccess(p0: SessionDescription?) {
}
override fun onSetSuccess() {
pendingCandidates.forEach { pending ->
peerConnection.addIceCandidate(pending)
}
pendingCandidates.clear()
}
override fun onCreateFailure(p0: String?) {
}
override fun onSetFailure(p0: String?) {
}
}, sd)
}
fun close() {
peerConnection.close()
}
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCClient.kt
查看文件 @
7bc681c
...
...
@@ -13,10 +13,11 @@ import okhttp3.WebSocket
import okhttp3.WebSocketListener
import okio.ByteString
import org.webrtc.IceCandidate
import org.webrtc.PeerConnection
import org.webrtc.SessionDescription
import javax.inject.Inject
internal
class RTCClient
class RTCClient
@Inject
constructor(
private val websocketFactory: WebSocket.Factory,
...
...
@@ -28,7 +29,7 @@ constructor(
private var currentWs: WebSocket? = null
var listener: Listener? = null
fun
connect
(
fun
join
(
host: String,
token: String,
isSecure: Boolean,
...
...
@@ -166,7 +167,7 @@ constructor(
val request = Rtc.SignalRequest.newBuilder()
.setAddTrack(addTrackRequest)
.build()
sendRequest(request)
}
...
...
@@ -240,5 +241,16 @@ constructor(
const val SD_TYPE_ANSWER = "answer"
const val SD_TYPE_OFFER = "offer"
const val SD_TYPE_PRANSWER = "pranswer"
private fun iceServer(url: String) =
PeerConnection.IceServer.builder(url).createIceServer()
val DEFAULT_ICE_SERVERS = listOf(
iceServer("stun:stun.l.google.com:19302"),
iceServer("stun:stun1.l.google.com:19302"),
iceServer("stun:stun2.l.google.com:19302"),
iceServer("stun:stun3.l.google.com:19302"),
iceServer("stun:stun4.l.google.com:19302"),
)
}
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt
查看文件 @
7bc681c
package io.livekit.android.room
internal class RTCEngine {
import org.webrtc.PeerConnection
import javax.inject.Inject
class RTCEngine
@Inject
constructor(
private val client: RTCClient
) {
init {
val rtcConfig = PeerConnection.RTCConfiguration(RTCClient.DEFAULT_ICE_SERVERS).apply {
sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN
continualGatheringPolicy = PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY
}
}
suspend fun join(url: String, token: String, isSecure: Boolean) {
client.join(url, token, isSecure)
}
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/Room.kt
查看文件 @
7bc681c
package io.livekit.android.room
class Room(
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import io.livekit.android.ConnectOptions
class Room
@AssistedInject
constructor(
private val connectOptions: ConnectOptions,
@Assisted private val engine: RTCEngine,
) {
suspend fun connect() {
engine.join(connectOptions)
}
}
\ No newline at end of file
...
...
请
注册
或
登录
后发表评论