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
2025-01-10 21:48:21 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2025-01-10 21:48:21 +0900
Commit
8ee5ffa2b414af73b3fdd181dd0a58e0fd19a9f5
8ee5ffa2
1 parent
abf74e9b
Add example usage for ScreenAudioCapturer (#582)
显示空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
41 行增加
和
2 行删除
examples/screenshare-audio/src/main/java/io/livekit/android/example/screenshareaudio/MainViewModel.kt
livekit-android-sdk/src/main/java/io/livekit/android/audio/ScreenAudioCapturer.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
examples/screenshare-audio/src/main/java/io/livekit/android/example/screenshareaudio/MainViewModel.kt
查看文件 @
8ee5ffa
/*
* Copyright 2024 LiveKit, Inc.
* Copyright 2024
-2025
LiveKit, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -61,6 +61,10 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
room.localParticipant.setScreenShareEnabled(true, data)
// Optionally disable the mic for screenshare audio only
// val javaAudioDeviceModule = (room.lkObjects.audioDeviceModule as? JavaAudioDeviceModule)
// javaAudioDeviceModule?.setAudioRecordEnabled(false)
// Publish the audio track.
room.localParticipant.setMicrophoneEnabled(true)
val screenCaptureTrack = room.localParticipant.getTrackPublication(Track.Source.SCREEN_SHARE)?.track as? LocalVideoTrack ?: return@launch
...
...
livekit-android-sdk/src/main/java/io/livekit/android/audio/ScreenAudioCapturer.kt
查看文件 @
8ee5ffa
/*
* Copyright 2024 LiveKit, Inc.
* Copyright 2024
-2025
LiveKit, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -61,7 +61,38 @@ private val DEFAULT_CONFIGURATOR: AudioPlaybackCaptureConfigurator = { builder -
*
* Example usage:
* ```
* suspend fun startScreenCapture(data: Intent) {
* if (ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
* return
* }
*
* // Publish the screen share video.
* room.localParticipant.setScreenShareEnabled(true, data)
*
* // Optionally disable the mic for screenshare audio only
* // val javaAudioDeviceModule = (room.lkObjects.audioDeviceModule as? JavaAudioDeviceModule)
* // javaAudioDeviceModule?.setAudioRecordEnabled(false)
*
* // Publish the audio track.
* room.localParticipant.setMicrophoneEnabled(true)
* val screenCaptureTrack = room.localParticipant.getTrackPublication(Track.Source.SCREEN_SHARE)?.track as? LocalVideoTrack ?: return
* val audioTrack = room.localParticipant.getTrackPublication(Track.Source.MICROPHONE)?.track as? LocalAudioTrack ?: return
*
* // Start capturing the screen share audio.
* val audioCapturer = ScreenAudioCapturer.createFromScreenShareTrack(screenCaptureTrack) ?: return
* audioCapturer.gain = 0.1f // Lower the volume so that mic can still be heard clearly.
* audioTrack.setAudioBufferCallback(audioCapturer)
* }
*
* suspend fun stopScreenCapture() {
* (room.localParticipant.getTrackPublication(Track.Source.MICROPHONE)?.track as? LocalAudioTrack)
* ?.setAudioBufferCallback(null)
* room.localParticipant.setMicrophoneEnabled(false)
* room.localParticipant.setScreenShareEnabled(false)
*
* // Remember to release when done capturing.
* audioCapturer?.releaseAudioResources()
* }
* ```
*/
@RequiresApi(Build.VERSION_CODES.Q)
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
查看文件 @
8ee5ffa
...
...
@@ -25,6 +25,7 @@ import com.vdurmont.semver4j.Semver
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import io.livekit.android.audio.ScreenAudioCapturer
import io.livekit.android.dagger.CapabilitiesGetter
import io.livekit.android.dagger.InjectionNames
import io.livekit.android.events.ParticipantEvent
...
...
@@ -271,11 +272,14 @@ internal constructor(
*
* This will use capture and publish default options from [Room].
*
* For screenshare audio, a [ScreenAudioCapturer] can be used.
*
* @param mediaProjectionPermissionResultData The resultData returned from launching
* [MediaProjectionManager.createScreenCaptureIntent()](https://developer.android.com/reference/android/media/projection/MediaProjectionManager#createScreenCaptureIntent()).
* @throws IllegalArgumentException if attempting to enable screenshare without [mediaProjectionPermissionResultData]
* @see Room.screenShareTrackCaptureDefaults
* @see Room.screenShareTrackPublishDefaults
* @see ScreenAudioCapturer
*/
suspend fun setScreenShareEnabled(
enabled: Boolean,
...
...
请
注册
或
登录
后发表评论