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-11-10 15:19:42 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
8ad1080f500ccaa7b72588bb1a649f6b5bcb8fc3
8ad1080f
1 parent
f8fde81e
fill in leftover high level api stuff and update sample app usage
显示空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
52 行增加
和
26 行删除
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
sample-app-compose/src/main/java/io/livekit/android/composesample/CallActivity.kt
sample-app-compose/src/main/java/io/livekit/android/composesample/CallViewModel.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
查看文件 @
8ad1080
...
...
@@ -108,6 +108,18 @@ internal constructor(
return super.getTrackPublicationByName(name) as? LocalTrackPublication
}
suspend fun setCameraEnabled(enabled: Boolean){
setTrackEnabled(Track.Source.CAMERA, enabled)
}
suspend fun setMicrophoneEnabled(enabled: Boolean){
setTrackEnabled(Track.Source.MICROPHONE, enabled)
}
suspend fun setScreenShareEnabled(enabled: Boolean) {
setTrackEnabled(Track.Source.SCREEN_SHARE, enabled)
}
private suspend fun setTrackEnabled(
source: Track.Source,
enabled: Boolean,
...
...
@@ -122,6 +134,7 @@ internal constructor(
when (source) {
Track.Source.CAMERA -> {
val track = createVideoTrack()
track.startCapture()
publishVideoTrack(track)
}
Track.Source.MICROPHONE -> {
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/Participant.kt
查看文件 @
8ad1080
...
...
@@ -109,6 +109,25 @@ open class Participant(var sid: String, identity: String? = null) {
return null
}
fun isCameraEnabled(): Boolean {
val pub = getTrackPublication(Track.Source.CAMERA)
return isTrackPublicationEnabled(pub)
}
fun isMicrophoneEnabled(): Boolean {
val pub = getTrackPublication(Track.Source.MICROPHONE)
return isTrackPublicationEnabled(pub)
}
fun isScreenShareEnabled(): Boolean {
val pub = getTrackPublication(Track.Source.SCREEN_SHARE)
return isTrackPublicationEnabled(pub)
}
private fun isTrackPublicationEnabled(pub: TrackPublication?): Boolean {
return !(pub?.muted ?: true)
}
/**
* @suppress
*/
...
...
sample-app-compose/src/main/java/io/livekit/android/composesample/CallActivity.kt
查看文件 @
8ad1080
...
...
@@ -87,7 +87,7 @@ class CallActivity : AppCompatActivity() {
val room by viewModel.room.observeAsState()
val participants by viewModel.remoteParticipants.observeAsState(emptyList())
val micEnabled by viewModel.micEnabled.observeAsState(true)
val videoEnabled by viewModel.
video
Enabled.observeAsState(true)
val videoEnabled by viewModel.
camera
Enabled.observeAsState(true)
val flipButtonEnabled by viewModel.flipButtonVideoEnabled.observeAsState(true)
val screencastEnabled by viewModel.screencastEnabled.observeAsState(false)
Content(
...
...
@@ -228,7 +228,7 @@ class CallActivity : AppCompatActivity() {
)
}
FloatingActionButton(
onClick = { viewModel.set
Video
Enabled(!videoEnabled) },
onClick = { viewModel.set
Camera
Enabled(!videoEnabled) },
backgroundColor = Color.DarkGray,
) {
val resource =
...
...
sample-app-compose/src/main/java/io/livekit/android/composesample/CallViewModel.kt
查看文件 @
8ad1080
...
...
@@ -11,10 +11,8 @@ import io.livekit.android.ConnectOptions
import io.livekit.android.LiveKit
import io.livekit.android.room.Room
import io.livekit.android.room.RoomListener
import io.livekit.android.room.participant.AudioTrackPublishOptions
import io.livekit.android.room.participant.Participant
import io.livekit.android.room.participant.RemoteParticipant
import io.livekit.android.room.participant.VideoTrackPublishOptions
import io.livekit.android.room.track.*
import kotlinx.coroutines.launch
...
...
@@ -28,15 +26,13 @@ class CallViewModel(
private val mutableRemoteParticipants = MutableLiveData<List<RemoteParticipant>>()
val remoteParticipants: LiveData<List<RemoteParticipant>> = mutableRemoteParticipants
private var localAudioTrack: LocalAudioTrack? = null
private var localVideoTrack: LocalVideoTrack? = null
private var localScreencastTrack: LocalScreencastVideoTrack? = null
private val mutableMicEnabled = MutableLiveData(true)
val micEnabled = mutableMicEnabled.hide()
private val mutableVideoEnabled = MutableLiveData(true)
val videoEnabled = mutableVideoEnabled.hide()
private val mutableCameraEnabled = MutableLiveData(true)
val cameraEnabled = mutableCameraEnabled.hide()
private val mutableFlipVideoButtonEnabled = MutableLiveData(true)
val flipButtonVideoEnabled = mutableFlipVideoButtonEnabled.hide()
...
...
@@ -56,19 +52,11 @@ class CallViewModel(
// Create and publish audio/video tracks
val localParticipant = room.localParticipant
val audioTrack = localParticipant.createAudioTrack()
localParticipant.publishAudioTrack(audioTrack, AudioTrackPublishOptions(dtx = true))
this@CallViewModel.localAudioTrack = audioTrack
mutableMicEnabled.postValue(audioTrack.enabled)
localParticipant.setMicrophoneEnabled(true)
mutableMicEnabled.postValue(localParticipant.isMicrophoneEnabled())
val videoTrack = localParticipant.createVideoTrack()
localParticipant.publishVideoTrack(
videoTrack,
VideoTrackPublishOptions(simulcast = false)
)
videoTrack.startCapture()
this@CallViewModel.localVideoTrack = videoTrack
mutableVideoEnabled.postValue(videoTrack.enabled)
localParticipant.setCameraEnabled(true)
mutableCameraEnabled.postValue(localParticipant.isCameraEnabled())
updateParticipants(room)
mutableRoom.value = room
...
...
@@ -146,25 +134,31 @@ class CallViewModel(
}
fun setMicEnabled(enabled: Boolean) {
localAudioTrack?.enabled = enabled
viewModelScope.launch {
val localParticipant = room.value?.localParticipant ?: return@launch
localParticipant.setMicrophoneEnabled(enabled)
mutableMicEnabled.postValue(enabled)
}
}
fun setVideoEnabled(enabled: Boolean) {
localVideoTrack?.enabled = enabled
mutableVideoEnabled.postValue(enabled)
fun setCameraEnabled(enabled: Boolean) {
viewModelScope.launch {
val localParticipant = room.value?.localParticipant ?: return@launch
localParticipant.setMicrophoneEnabled(enabled)
mutableCameraEnabled.postValue(enabled)
}
}
fun flipVideo() {
room.value?.localParticipant?.let { participant ->
val videoTrack = participant.videoTracks.values
.firstOrNull()
val videoTrack = participant.getTrackPublication(Track.Source.CAMERA)
?.track as? LocalVideoTrack
?: return@let
val newOptions = when (videoTrack.options.position) {
CameraPosition.FRONT -> LocalVideoTrackOptions(position = CameraPosition.BACK)
CameraPosition.BACK -> LocalVideoTrackOptions(position = CameraPosition.FRONT)
else -> LocalVideoTrackOptions()
}
videoTrack.restartTrack(newOptions)
...
...
请
注册
或
登录
后发表评论