正在显示
17 个修改的文件
包含
194 行增加
和
1 行删除
| @@ -9,6 +9,7 @@ import javax.inject.Singleton | @@ -9,6 +9,7 @@ import javax.inject.Singleton | ||
| 9 | @Singleton | 9 | @Singleton |
| 10 | @Component( | 10 | @Component( |
| 11 | modules = [ | 11 | modules = [ |
| 12 | + CoroutinesModule::class, | ||
| 12 | RTCModule::class, | 13 | RTCModule::class, |
| 13 | WebModule::class, | 14 | WebModule::class, |
| 14 | JsonFormatModule::class, | 15 | JsonFormatModule::class, |
| @@ -4,6 +4,7 @@ import dagger.assisted.Assisted | @@ -4,6 +4,7 @@ import dagger.assisted.Assisted | ||
| 4 | import dagger.assisted.AssistedFactory | 4 | import dagger.assisted.AssistedFactory |
| 5 | import dagger.assisted.AssistedInject | 5 | import dagger.assisted.AssistedInject |
| 6 | import io.livekit.android.ConnectOptions | 6 | import io.livekit.android.ConnectOptions |
| 7 | +import io.livekit.android.room.participant.RemoteParticipant | ||
| 7 | 8 | ||
| 8 | class Room | 9 | class Room |
| 9 | @AssistedInject | 10 | @AssistedInject |
| @@ -12,6 +13,7 @@ constructor( | @@ -12,6 +13,7 @@ constructor( | ||
| 12 | private val engine: RTCEngine, | 13 | private val engine: RTCEngine, |
| 13 | ) { | 14 | ) { |
| 14 | 15 | ||
| 16 | + var listener: Listener? = null | ||
| 15 | suspend fun connect(url: String, token: String, isSecure: Boolean) { | 17 | suspend fun connect(url: String, token: String, isSecure: Boolean) { |
| 16 | engine.join(url, token, isSecure) | 18 | engine.join(url, token, isSecure) |
| 17 | } | 19 | } |
| @@ -20,4 +22,21 @@ constructor( | @@ -20,4 +22,21 @@ constructor( | ||
| 20 | interface Factory { | 22 | interface Factory { |
| 21 | fun create(connectOptions: ConnectOptions): Room | 23 | fun create(connectOptions: ConnectOptions): Room |
| 22 | } | 24 | } |
| 25 | + | ||
| 26 | + | ||
| 27 | + interface Listener { | ||
| 28 | + fun onConnect(room: Room) | ||
| 29 | + fun onDisconnect(room: Room, error: Exception) | ||
| 30 | + fun onParticipantDidConnect(room: Room, participant: RemoteParticipant) | ||
| 31 | + } | ||
| 32 | +// func didConnect(room: Room) | ||
| 33 | +// func didDisconnect(room: Room, error: Error?) | ||
| 34 | +// func participantDidConnect(room: Room, participant: RemoteParticipant) | ||
| 35 | +// func participantDidDisconnect(room: Room, participant: RemoteParticipant) | ||
| 36 | +// func didFailToConnect(room: Room, error: Error) | ||
| 37 | +// func isReconnecting(room: Room, error: Error) | ||
| 38 | +// func didReconnect(room: Room) | ||
| 39 | +// func didStartRecording(room: Room) | ||
| 40 | +// func didStopRecording(room: Room) | ||
| 41 | +// func activeSpeakersDidChange(speakers: [Participant], room: Room) | ||
| 23 | } | 42 | } |
| 1 | +package io.livekit.android.room.participant | ||
| 2 | + | ||
| 3 | +import io.livekit.android.room.track.Track | ||
| 4 | +import io.livekit.android.room.track.TrackPublication | ||
| 5 | + | ||
| 6 | +class Participant(val sid: String, name: String? = null) { | ||
| 7 | + inline class Sid(val sid: String) | ||
| 8 | + | ||
| 9 | + var metadata: String? = null | ||
| 10 | + var name: String? = name | ||
| 11 | + internal set | ||
| 12 | + var audioLevel: Float = 0f | ||
| 13 | + internal set | ||
| 14 | + | ||
| 15 | + var tracks = mutableMapOf<Track.Sid, TrackPublication>() | ||
| 16 | + var audioTracks = mutableMapOf<Track.Sid, TrackPublication>() | ||
| 17 | + private set | ||
| 18 | + var videoTracks = mutableMapOf<Track.Sid, TrackPublication>() | ||
| 19 | + private set | ||
| 20 | + var dataTracks = mutableMapOf<Track.Sid, TrackPublication>() | ||
| 21 | + private set | ||
| 22 | + | ||
| 23 | + fun addTrack(publication: TrackPublication){ | ||
| 24 | + tracks[publication.trackSid] = publication | ||
| 25 | + when(publication) { | ||
| 26 | + | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | +} |
| 1 | +package io.livekit.android.room.track | ||
| 2 | + | ||
| 3 | +import org.webrtc.AudioTrack | ||
| 4 | +import org.webrtc.MediaStreamTrack | ||
| 5 | + | ||
| 6 | +open class AudioTrack(name: String, val rtcTrack: AudioTrack) : | ||
| 7 | + Track(name, stateFromRTCMediaTrackState(rtcTrack.state())), | ||
| 8 | + MediaTrack { | ||
| 9 | + | ||
| 10 | + override val mediaTrack: MediaStreamTrack | ||
| 11 | + get() = rtcTrack | ||
| 12 | +} |
| 1 | +package io.livekit.android.room.track | ||
| 2 | + | ||
| 3 | +class RemoteAudioTrack( | ||
| 4 | + sid: Track.Sid, | ||
| 5 | + playbackEnabled: Boolean = true, | ||
| 6 | + name: String, | ||
| 7 | + rtcTrack: org.webrtc.AudioTrack | ||
| 8 | +) : AudioTrack(name, rtcTrack), RemoteTrack { | ||
| 9 | + | ||
| 10 | + override var sid: Track.Sid = sid | ||
| 11 | + var playbackEnabled = playbackEnabled | ||
| 12 | + internal set | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +} |
livekit-android-sdk/src/main/java/io/livekit/android/room/track/RemoteAudioTrackPublication.kt
0 → 100644
| 1 | +package io.livekit.android.room.track | ||
| 2 | + | ||
| 3 | +import livekit.Model | ||
| 4 | + | ||
| 5 | +class RemoteAudioTrackPublication( | ||
| 6 | + info: Model.TrackInfo, | ||
| 7 | + track: Track? = null | ||
| 8 | +) : RemoteTrackPublication(info, track), AudioTrackPublication { | ||
| 9 | + override val audioTrack: AudioTrack? | ||
| 10 | + get() = track as? AudioTrack | ||
| 11 | +} |
livekit-android-sdk/src/main/java/io/livekit/android/room/track/RemoteTrackPublication.kt
0 → 100644
| 1 | +package io.livekit.android.room.track | ||
| 2 | + | ||
| 3 | +import livekit.Model | ||
| 4 | + | ||
| 5 | +open class RemoteTrackPublication(info: Model.TrackInfo, track: Track? = null) : | ||
| 6 | + TrackPublication(info, track) { | ||
| 7 | + | ||
| 8 | + val remoteTrack: Track? | ||
| 9 | + get() = track | ||
| 10 | + | ||
| 11 | + val trackSubscribed: Boolean | ||
| 12 | + get() = track != null | ||
| 13 | + | ||
| 14 | + val publishPriority = Track.Priority.STANDARD | ||
| 15 | +} |
livekit-android-sdk/src/main/java/io/livekit/android/room/track/RemoteVideoTrackPublication.kt
0 → 100644
| 1 | +package io.livekit.android.room.track | ||
| 2 | + | ||
| 3 | +import livekit.Model | ||
| 4 | + | ||
| 5 | +class RemoteVideoTrackPublication(info: Model.TrackInfo, track: Track? = null) : | ||
| 6 | + RemoteTrackPublication(info, track), | ||
| 7 | + VideoTrackPublication { | ||
| 8 | + | ||
| 9 | + override val videoTrack: VideoTrack? | ||
| 10 | + get() = track as? VideoTrack | ||
| 11 | +} |
| @@ -3,7 +3,7 @@ package io.livekit.android.room.track | @@ -3,7 +3,7 @@ package io.livekit.android.room.track | ||
| 3 | import org.webrtc.DataChannel | 3 | import org.webrtc.DataChannel |
| 4 | import org.webrtc.MediaStreamTrack | 4 | import org.webrtc.MediaStreamTrack |
| 5 | 5 | ||
| 6 | -class Track(name: String, state: State) { | 6 | +open class Track(name: String, state: State) { |
| 7 | 7 | ||
| 8 | var name = name | 8 | var name = name |
| 9 | internal set | 9 | internal set |
| 1 | +package io.livekit.android.room.track | ||
| 2 | + | ||
| 3 | +import livekit.Model | ||
| 4 | + | ||
| 5 | +open class TrackPublication(info: Model.TrackInfo, track: Track? = null) { | ||
| 6 | + var track: Track? = track | ||
| 7 | + internal set | ||
| 8 | + var trackName: String | ||
| 9 | + internal set | ||
| 10 | + var trackSid: Track.Sid | ||
| 11 | + private set | ||
| 12 | + | ||
| 13 | + init { | ||
| 14 | + trackSid = Track.Sid(info.sid) | ||
| 15 | + trackName = info.name | ||
| 16 | + } | ||
| 17 | + | ||
| 18 | + fun updateFromInfo(info: Model.TrackInfo) { | ||
| 19 | + trackSid = Track.Sid(info.sid) | ||
| 20 | + trackName = info.name | ||
| 21 | + } | ||
| 22 | +} |
| 1 | +package io.livekit.android.room.track | ||
| 2 | + | ||
| 3 | +import org.webrtc.MediaStreamTrack | ||
| 4 | +import org.webrtc.VideoSink | ||
| 5 | +import org.webrtc.VideoTrack | ||
| 6 | + | ||
| 7 | +open class VideoTrack(name: String, val rtcTrack: VideoTrack) : | ||
| 8 | + Track(name, stateFromRTCMediaTrackState(rtcTrack.state())), | ||
| 9 | + MediaTrack { | ||
| 10 | + | ||
| 11 | + override val mediaTrack: MediaStreamTrack | ||
| 12 | + get() = rtcTrack | ||
| 13 | + | ||
| 14 | + var enabled: Boolean | ||
| 15 | + get() = rtcTrack.enabled() | ||
| 16 | + set(value) { | ||
| 17 | + rtcTrack.setEnabled(value) | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + fun addRenderer(renderer: VideoSink) = rtcTrack.addSink(renderer) | ||
| 21 | + | ||
| 22 | + fun removeRenderer(renderer: VideoSink) = rtcTrack.addSink(renderer) | ||
| 23 | +} |
-
请 注册 或 登录 后发表评论