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-03-11 21:01:15 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2022-03-11 21:01:15 +0900
Commit
af819da87aef18170de5a211be25439c2676b95a
af819da8
1 parent
b24ba73d
use protobuf-javalite library (#63)
隐藏空白字符变更
内嵌
并排对比
正在显示
11 个修改的文件
包含
25 行增加
和
58 行删除
build.gradle
livekit-android-sdk/build.gradle
livekit-android-sdk/proguard-rules.pro
livekit-android-sdk/src/main/java/io/livekit/android/dagger/InjectionNames.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/JsonFormatModule.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/main/java/io/livekit/android/room/RTCEngine.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt
livekit-android-sdk/src/test/java/io/livekit/android/room/SignalClientTest.kt
sample-app-common/build.gradle
build.gradle
查看文件 @
af819da
...
...
@@ -18,7 +18,7 @@ buildscript {
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"
classpath
'com.google.protobuf:protobuf-gradle-plugin:0.8.1
5
'
classpath
'com.google.protobuf:protobuf-gradle-plugin:0.8.1
8
'
classpath
"io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.30.0"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
...
...
@@ -61,7 +61,7 @@ ext {
junitJupiter
:
"5.5.0"
,
coroutines
:
"1.6.0"
,
lint
:
"30.0.1"
,
protobuf
:
"3.1
5.1
"
,
protobuf
:
"3.1
9.4
"
,
]
generated
=
[
protoSrc:
"$projectDir/protocol"
,
...
...
livekit-android-sdk/build.gradle
查看文件 @
af819da
...
...
@@ -62,6 +62,7 @@ protobuf {
all
().
each
{
task
->
task
.
builtins
{
java
{
option
"lite"
}
}
}
...
...
@@ -108,8 +109,7 @@ dependencies {
api
"com.squareup.okhttp3:okhttp:4.9.1"
implementation
"androidx.annotation:annotation:1.3.0"
implementation
"androidx.core:core:${versions.androidx_core}"
implementation
"com.google.protobuf:protobuf-java:${versions.protobuf}"
implementation
"com.google.protobuf:protobuf-java-util:${versions.protobuf}"
implementation
"com.google.protobuf:protobuf-javalite:${versions.protobuf}"
implementation
"androidx.compose.ui:ui:$compose_version"
implementation
'com.google.dagger:dagger:2.38'
...
...
livekit-android-sdk/proguard-rules.pro
查看文件 @
af819da
...
...
@@ -41,4 +41,6 @@
}
-
keepclasseswithmembers
class
io
.
livekit
.
android
.
**
{
#
<--
change
package
name
to
your
app
'
s
kotlinx
.
serialization
.
KSerializer
serializer
(...);
}
\ No newline at end of file
}
-
keep
class
*
extends
com
.
google
.
protobuf
.
GeneratedMessageLite
{
*
;
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/InjectionNames.kt
查看文件 @
af819da
...
...
@@ -22,8 +22,6 @@ object InjectionNames {
*/
internal const val DISPATCHER_UNCONFINED = "dispatcher_unconfined"
internal const val SIGNAL_JSON_ENABLED = "signal_json_enabled"
internal const val OPTIONS_VIDEO_HW_ACCEL = "options_video_hw_accel"
// Overrides
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/JsonFormatModule.kt
查看文件 @
af819da
package io.livekit.android.dagger
import com.google.protobuf.util.JsonFormat
import dagger.Module
import dagger.Provides
import dagger.Reusable
import kotlinx.serialization.json.Json
import javax.inject.Named
@Module
object JsonFormatModule {
@Provides
fun protobufJsonFormatParser(): JsonFormat.Parser {
return JsonFormat.parser()
}
@Provides
fun protobufJsonFormatPrinter(): JsonFormat.Printer {
return JsonFormat.printer()
}
@Provides
@Reusable
fun kotlinSerializationJson(): Json =
Json {
ignoreUnknownKeys = true
}
@Provides
@Named(InjectionNames.SIGNAL_JSON_ENABLED)
fun signalJsonEnabled(): Boolean = false
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/LiveKitComponent.kt
查看文件 @
af819da
package io.livekit.android.dagger
import android.content.Context
import androidx.annotation.Nullable
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
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/WebModule.kt
查看文件 @
af819da
package io.livekit.android.dagger
import androidx.annotation.Nullable
import dagger.Module
import dagger.Provides
import okhttp3.OkHttpClient
import okhttp3.WebSocket
import javax.annotation.Nullable
import javax.inject.Named
import javax.inject.Singleton
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt
查看文件 @
af819da
package io.livekit.android.room
import android.os.SystemClock
import com.google.protobuf.ByteString
import io.livekit.android.ConnectOptions
import io.livekit.android.dagger.InjectionNames
import io.livekit.android.room.participant.ParticipantTrackPermission
...
...
@@ -682,7 +683,7 @@ internal constructor(
if (buffer == null) {
return
}
val dp = LivekitModels.DataPacket.parseFrom(
buffer.data
)
val dp = LivekitModels.DataPacket.parseFrom(
ByteString.copyFrom(buffer.data)
)
when (dp.valueCase) {
LivekitModels.DataPacket.ValueCase.SPEAKER -> {
listener?.onActiveSpeakersUpdate(dp.speaker.speakersList)
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt
查看文件 @
af819da
package io.livekit.android.room
import com.google.protobuf.util.JsonFormat
import com.vdurmont.semver4j.Semver
import io.livekit.android.ConnectOptions
import io.livekit.android.dagger.InjectionNames
...
...
@@ -38,12 +37,8 @@ class SignalClient
@Inject
constructor(
private val websocketFactory: WebSocket.Factory,
private val fromJsonProtobuf: JsonFormat.Parser,
private val toJsonProtobuf: JsonFormat.Printer,
private val json: Json,
private val okHttpClient: OkHttpClient,
@Named(InjectionNames.SIGNAL_JSON_ENABLED)
private val useJson: Boolean,
@Named(InjectionNames.DISPATCHER_IO)
private val ioDispatcher: CoroutineDispatcher,
) : WebSocketListener() {
...
...
@@ -197,11 +192,7 @@ constructor(
}
override fun onMessage(webSocket: WebSocket, text: String) {
val signalResponseBuilder = LivekitRtc.SignalResponse.newBuilder()
fromJsonProtobuf.merge(text, signalResponseBuilder)
val response = signalResponseBuilder.build()
handleSignalResponse(response)
LKLog.w { "received JSON message, unsupported in this version." }
}
override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
...
...
@@ -444,14 +435,8 @@ constructor(
LKLog.w { "not connected, could not send request $request" }
return
}
val sent: Boolean
if (useJson) {
val message = toJsonProtobuf.print(request)
sent = currentWs?.send(message) ?: false
} else {
val message = request.toByteArray().toByteString()
sent = currentWs?.send(message) ?: false
}
val message = request.toByteArray().toByteString()
val sent = currentWs?.send(message) ?: false
if (!sent) {
LKLog.e { "error sending request: $request" }
...
...
@@ -463,7 +448,7 @@ constructor(
if (!isConnected) {
// Only handle joins if not connected.
if (response.
hasJoin()
) {
if (response.
join != null
) {
isConnected = true
startRequestQueue()
try {
...
...
@@ -473,7 +458,7 @@ constructor(
}
joinContinuation?.resumeWith(Result.success(Either.Left(response.join)))
} else {
LKLog.e { "Received response while not connected. $
{toJsonProtobuf.print(response)}
" }
LKLog.e { "Received response while not connected. $
response
" }
}
return
}
...
...
livekit-android-sdk/src/test/java/io/livekit/android/room/SignalClientTest.kt
查看文件 @
af819da
package io.livekit.android.room
import com.google.protobuf.util.JsonFormat
import io.livekit.android.BaseTest
import io.livekit.android.mock.MockWebSocketFactory
import io.livekit.android.mock.TestData
...
...
@@ -38,10 +37,7 @@ class SignalClientTest : BaseTest() {
wsFactory = MockWebSocketFactory()
client = SignalClient(
wsFactory,
JsonFormat.parser(),
JsonFormat.printer(),
Json,
useJson = false,
okHttpClient = okHttpClient,
ioDispatcher = coroutineRule.dispatcher
)
...
...
@@ -221,8 +217,8 @@ class SignalClientTest : BaseTest() {
const val EXAMPLE_URL = "ws://www.example.com"
val JOIN = with(LivekitRtc.SignalResponse.newBuilder()) {
join = with(joinBuilder) {
room = with(roomBuilder) {
join = with(LivekitRtc.JoinResponse.newBuilder()) {
room = with(LivekitModels.Room.newBuilder()) {
name = "roomname"
sid = "room_sid"
build()
...
...
@@ -236,7 +232,7 @@ class SignalClientTest : BaseTest() {
}
val OFFER = with(LivekitRtc.SignalResponse.newBuilder()) {
offer = with(
offerBuilder
) {
offer = with(
LivekitRtc.SessionDescription.newBuilder()
) {
sdp = "remote_offer"
type = "offer"
build()
...
...
@@ -245,8 +241,8 @@ class SignalClientTest : BaseTest() {
}
val ROOM_UPDATE = with(LivekitRtc.SignalResponse.newBuilder()) {
roomUpdate = with(roomUpdateBuilder) {
room = with(roomBuilder) {
roomUpdate = with(LivekitRtc.RoomUpdate.newBuilder()) {
room = with(LivekitModels.Room.newBuilder()) {
metadata = "metadata"
build()
}
...
...
@@ -256,7 +252,7 @@ class SignalClientTest : BaseTest() {
}
val LOCAL_TRACK_PUBLISHED = with(LivekitRtc.SignalResponse.newBuilder()) {
trackPublished = with(
trackPublishedBuilder
) {
trackPublished = with(
LivekitRtc.TrackPublishedResponse.newBuilder()
) {
cid = "local_cid"
track = TestData.LOCAL_AUDIO_TRACK
build()
...
...
@@ -306,7 +302,7 @@ class SignalClientTest : BaseTest() {
val CONNECTION_QUALITY = with(LivekitRtc.SignalResponse.newBuilder()) {
connectionQuality = with(
connectionQualityBuilder
) {
connectionQuality = with(
LivekitRtc.ConnectionQualityUpdate.newBuilder()
) {
addUpdates(with(LivekitRtc.ConnectionQualityInfo.newBuilder()) {
participantSid = JOIN.join.participant.sid
quality = LivekitModels.ConnectionQuality.EXCELLENT
...
...
@@ -345,7 +341,7 @@ class SignalClientTest : BaseTest() {
build()
}
val LEAVE = with(LivekitRtc.SignalResponse.newBuilder()) {
leave = with(
leaveBuilder
) {
leave = with(
LivekitRtc.LeaveRequest.newBuilder()
) {
build()
}
build()
...
...
sample-app-common/build.gradle
查看文件 @
af819da
...
...
@@ -40,7 +40,7 @@ dependencies {
api
"androidx.lifecycle:lifecycle-runtime-ktx:${versions.androidx_lifecycle}"
api
"androidx.lifecycle:lifecycle-viewmodel-ktx:${versions.androidx_lifecycle}"
api
"androidx.lifecycle:lifecycle-common-java8:${versions.androidx_lifecycle}"
api
"com.google.protobuf:protobuf-java:${versions.protobuf}"
api
"com.google.protobuf:protobuf-java
lite
:${versions.protobuf}"
api
project
(
":livekit-android-sdk"
)
implementation
'androidx.preference:preference-ktx:1.1.1'
// debugImplementation because LeakCanary should only run in debug builds.
...
...
请
注册
或
登录
后发表评论