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
davidliu
2022-01-19 11:04:13 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2022-01-18 18:04:13 -0800
Commit
f343e46154189aee9464c75ce5690d2fc5dcc39e
f343e461
1 parent
454ff23d
OkHttpClient override (#41)
显示空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
48 行增加
和
8 行删除
livekit-android-sdk/src/main/java/io/livekit/android/LiveKit.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/InjectionNames.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/LiveKitComponent.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/WebModule.kt
livekit-android-sdk/src/test/java/io/livekit/android/mock/dagger/TestLiveKitComponent.kt
livekit-android-sdk/src/main/java/io/livekit/android/LiveKit.kt
查看文件 @
f343e46
...
...
@@ -2,6 +2,8 @@ package io.livekit.android
import android.content.Context
import io.livekit.android.dagger.DaggerLiveKitComponent
import io.livekit.android.dagger.LiveKitOverrides
import io.livekit.android.dagger.create
import io.livekit.android.room.Room
import io.livekit.android.room.RoomListener
import io.livekit.android.util.LKLog
...
...
@@ -29,11 +31,12 @@ class LiveKit {
fun create(
appContext: Context,
options: RoomOptions = RoomOptions(),
overrides: LiveKitOverrides = LiveKitOverrides(),
): Room {
val ctx = appContext.applicationContext
val component = DaggerLiveKitComponent
.factory()
.create(ctx)
.create(ctx
, overrides
)
val room = component.roomFactory().create(ctx)
...
...
@@ -66,9 +69,10 @@ class LiveKit {
token: String,
options: ConnectOptions = ConnectOptions(),
roomOptions: RoomOptions = RoomOptions(),
listener: RoomListener? = null
listener: RoomListener? = null,
overrides: LiveKitOverrides = LiveKitOverrides()
): Room {
val room = create(appContext, roomOptions)
val room = create(appContext, roomOptions
, overrides
)
room.listener = listener
room.connect(url, token, options)
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/InjectionNames.kt
查看文件 @
f343e46
...
...
@@ -25,4 +25,7 @@ object InjectionNames {
internal const val SIGNAL_JSON_ENABLED = "signal_json_enabled"
internal const val OPTIONS_VIDEO_HW_ACCEL = "options_video_hw_accel"
// Overrides
internal const val OVERRIDE_OKHTTP = "override_okhttp"
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/LiveKitComponent.kt
查看文件 @
f343e46
...
...
@@ -4,8 +4,11 @@ import android.content.Context
import dagger.BindsInstance
import dagger.Component
import io.livekit.android.room.Room
import okhttp3.OkHttpClient
import org.webrtc.EglBase
import org.webrtc.PeerConnectionFactory
import javax.annotation.Nullable
import javax.inject.Named
import javax.inject.Singleton
@Singleton
...
...
@@ -17,7 +20,7 @@ import javax.inject.Singleton
JsonFormatModule::class,
]
)
interface LiveKitComponent {
inter
nal inter
face LiveKitComponent {
fun roomFactory(): Room.Factory
...
...
@@ -27,6 +30,30 @@ interface LiveKitComponent {
@Component.Factory
interface Factory {
fun create(@BindsInstance appContext: Context): LiveKitComponent
fun create(
@BindsInstance appContext: Context,
@BindsInstance
@Named(InjectionNames.OVERRIDE_OKHTTP)
@Nullable
okHttpClientOverride: OkHttpClient?
): LiveKitComponent
}
}
internal fun LiveKitComponent.Factory.create(
context: Context,
overrides: LiveKitOverrides,
): LiveKitComponent {
return create(
appContext = context,
okHttpClientOverride = overrides.okHttpClient
)
}
/**
* Overrides to replace LiveKit internally used component with custom implementations.
*/
data class LiveKitOverrides(
val okHttpClient: OkHttpClient? = null
)
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/WebModule.kt
查看文件 @
f343e46
...
...
@@ -4,14 +4,20 @@ import dagger.Module
import dagger.Provides
import okhttp3.OkHttpClient
import okhttp3.WebSocket
import javax.annotation.Nullable
import javax.inject.Named
import javax.inject.Singleton
@Module
object WebModule {
@Provides
@Singleton
fun okHttpClient(): OkHttpClient {
return OkHttpClient()
fun okHttpClient(
@Named(InjectionNames.OVERRIDE_OKHTTP)
@Nullable
okHttpClientOverride: OkHttpClient?
): OkHttpClient {
return okHttpClientOverride ?: OkHttpClient()
}
@Provides
...
...
livekit-android-sdk/src/test/java/io/livekit/android/mock/dagger/TestLiveKitComponent.kt
查看文件 @
f343e46
...
...
@@ -17,7 +17,7 @@ import javax.inject.Singleton
JsonFormatModule::class,
]
)
interface TestLiveKitComponent : LiveKitComponent {
inter
nal inter
face TestLiveKitComponent : LiveKitComponent {
fun websocketFactory(): MockWebsocketFactory
...
...
请
注册
或
登录
后发表评论