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-03-23 13:22:57 -0700
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
9c4742bfbb87c7630afe9bdb4f2ab19796aec26a
9c4742bf
1 parent
2f43f9d7
onMetadataChanged callback on Room
显示空白字符变更
内嵌
并排对比
正在显示
6 个修改的文件
包含
69 行增加
和
38 行删除
livekit-android-sdk/src/main/java/io/livekit/android/room/Room.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/Participant.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/LocalVideoTrack.kt
sample-app/src/main/java/io/livekit/android/sample/CallViewModel.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/Room.kt
查看文件 @
9c4742b
...
...
@@ -24,7 +24,7 @@ constructor(
@Assisted private val connectOptions: ConnectOptions,
private val engine: RTCEngine,
private val eglBase: EglBase,
) : RTCEngine.Listener {
) : RTCEngine.Listener
, RemoteParticipant.Listener, LocalParticipant.Listener
{
init {
engine.listener = this
}
...
...
@@ -96,6 +96,7 @@ constructor(
} else {
RemoteParticipant(sid, null)
}
participant.listener = this
mutableRemoteParticipants[sid] = participant
return participant
}
...
...
@@ -152,11 +153,11 @@ constructor(
fun onFailedToConnect(room: Room, error: Exception) {}
fun onReconnecting(room: Room, error: Exception) {}
fun onReconnect(room: Room) {}
fun onStartRecording(room: Room) {}
fun onStopRecording(room: Room) {}
fun onMetadataChanged(room: Room, Participant: Participant, prevMetadata: String?) {}
fun onActiveSpeakersChanged(speakers: List<Participant>, room: Room) {}
}
//----------------------------------- RTCEngine.Listener ------------------------------------//
/**
* @suppress
*/
...
...
@@ -178,7 +179,9 @@ constructor(
name = response.room.name
if (response.hasParticipant()) {
localParticipant = LocalParticipant(response.participant, engine)
val lp = LocalParticipant(response.participant, engine)
lp.listener = this
localParticipant = lp
}
if (response.otherParticipantsList.isNotEmpty()) {
response.otherParticipantsList.forEach {
...
...
@@ -268,6 +271,15 @@ constructor(
listener?.onFailedToConnect(this, error)
}
//------------------------------- RemoteParticipant.Listener --------------------------------//
/**
* @suppress
*/
override fun onMetadataChanged(participant: Participant, prevMetadata: String?) {
listener?.onMetadataChanged(this, participant, prevMetadata)
}
/**
* @suppress
* // TODO(@dl): can this be moved out of Room/SDK?
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
查看文件 @
9c4742b
...
...
@@ -29,16 +29,11 @@ class LocalParticipant(sid: Sid, name: String? = null) :
val localDataTrackPublications
get() = dataTracks.values.toList()
var engine: RTCEngine? = null
val listener: Listener? = null
/**
* @suppress
*/
fun updateFromInfo(info: LivekitModels.ParticipantInfo) {
sid = Sid(info.sid)
name = info.identity
metadata = info.metadata
private var engine: RTCEngine? = null
var listener: Listener? = null
set(v) {
field = v
participantListener = v
}
suspend fun publishAudioTrack(
...
...
@@ -205,13 +200,14 @@ class LocalParticipant(sid: Sid, name: String? = null) :
}
}
interface Listener {
fun onPublishAudioTrack(track: LocalAudioTrack)
fun onFailToPublishAudioTrack(exception: Exception)
fun onPublishVideoTrack(track: LocalVideoTrack)
fun onFailToPublishVideoTrack(exception: Exception)
fun onPublishDataTrack(track: LocalDataTrack)
fun onFailToPublishDataTrack(exception: Exception)
interface Listener : Participant.Listener {
// TODO: can we move these to exceptions? instead of callbacks
fun onPublishAudioTrack(track: LocalAudioTrack) {}
fun onFailToPublishAudioTrack(exception: Exception) {}
fun onPublishVideoTrack(track: LocalVideoTrack) {}
fun onFailToPublishVideoTrack(exception: Exception) {}
fun onPublishDataTrack(track: LocalDataTrack) {}
fun onFailToPublishDataTrack(exception: Exception) {}
//fun onNetworkQualityLevelChange
}
}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/Participant.kt
查看文件 @
9c4742b
package io.livekit.android.room.participant
import io.livekit.android.room.track.*
import livekit.LivekitModels
open class Participant(var sid: Sid, name: String? = null) {
inline class Sid(val sid: String)
var metadata: String? = null
var participantInfo: LivekitModels.ParticipantInfo? = null
private set
var name: String? = name
internal set
var audioLevel: Float = 0f
internal set
var metadata: String? = null
var participantListener: Listener? = null
val hasInfo
get() = participantInfo != null
var tracks = mutableMapOf<Track.Sid, TrackPublication>()
var audioTracks = mutableMapOf<Track.Sid, TrackPublication>()
...
...
@@ -31,6 +37,22 @@ open class Participant(var sid: Sid, name: String? = null) {
}
}
/**
* @suppress
*/
open fun updateFromInfo(info: LivekitModels.ParticipantInfo) {
sid = Sid(info.sid)
name = info.identity
participantInfo = info
val prevMetadata = metadata
metadata = info.metadata
if (prevMetadata != metadata) {
participantListener?.onMetadataChanged(this, prevMetadata)
}
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
...
...
@@ -46,4 +68,7 @@ open class Participant(var sid: Sid, name: String? = null) {
return sid.hashCode()
}
interface Listener {
fun onMetadataChanged(participant: Participant, prevMetadata: String?) {}
}
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/RemoteParticipant.kt
查看文件 @
9c4742b
...
...
@@ -31,11 +31,10 @@ class RemoteParticipant(
get() = dataTracks.values.toList()
var listener: Listener? = null
var participantInfo: LivekitModels.ParticipantInfo? = null
val hasInfo
get() = participantInfo != null
set(v) {
field = v
participantListener = v
}
private val coroutineScope = CloseableCoroutineScope(SupervisorJob())
...
...
@@ -45,12 +44,9 @@ class RemoteParticipant(
/**
* @suppress
*/
fun updateFromInfo(info: LivekitModels.ParticipantInfo) {
override
fun updateFromInfo(info: LivekitModels.ParticipantInfo) {
val hadInfo = hasInfo
sid = Sid(info.sid)
name = info.identity
participantInfo = info
metadata = info.metadata
super.updateFromInfo(info)
val validTrackPublication = mutableMapOf<Track.Sid, RemoteTrackPublication>()
val newTrackPublications = mutableMapOf<Track.Sid, RemoteTrackPublication>()
...
...
@@ -247,7 +243,7 @@ class RemoteParticipant(
private const val KIND_VIDEO = "video"
}
interface Listener {
interface Listener
: Participant.Listener
{
fun onPublish(audioTrack: RemoteAudioTrackPublication, participant: RemoteParticipant) {}
fun onUnpublish(audioTrack: RemoteAudioTrackPublication, participant: RemoteParticipant) {}
fun onPublish(videoTrack: RemoteVideoTrackPublication, participant: RemoteParticipant) {}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalVideoTrack.kt
查看文件 @
9c4742b
...
...
@@ -44,6 +44,7 @@ class LocalVideoTrack(
)
}
private fun createVideoCapturer(context: Context): VideoCapturer? {
val videoCapturer: VideoCapturer? = if (Camera2Enumerator.isSupported(context)) {
createCameraCapturer(Camera2Enumerator(context))
...
...
sample-app/src/main/java/io/livekit/android/sample/CallViewModel.kt
查看文件 @
9c4742b
...
...
@@ -65,15 +65,16 @@ class CallViewModel(
updateParticipants(room)
}
override fun on
StartRecording(
room: Room) {
override fun on
ActiveSpeakersChanged(speakers: List<Participant>,
room: Room) {
}
override fun onStopRecording(room: Room) {
}
override fun onMetadataChanged(
room: Room,
Participant: Participant,
prevMetadata: String?
) {
override fun onActiveSpeakersChanged(speakers: List<Participant>, room: Room) {
}
}
)
}
...
...
请
注册
或
登录
后发表评论