螢幕分享¶
ArctosLinks.Media 提供了一套 API 來啟用與停用螢幕分享的操作。
啟用螢幕分享¶
功能:啟用螢幕分享。 返回值:如果成功啟用則完成,若是使用時發生例外狀況,則返回錯誤。
注意事項
螢幕分享功能僅能在會議進行時由會議室主持人使用。值得注意的是:在iOS系統上開啟螢幕分享的情況下,若是使用者啟用系統原生的螢幕錄影器,會發生無法取得影像的狀況。 在Android系統上需要先取得權限同意後才能使用此功能
import com.arctos.sdk.links.core.application.ArctosLinks
import android.media.projection.MediaProjectionManager
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
private val screenProjectionLauncher: ActivityResultLauncher<Intent> =
registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (Activity.RESULT_OK == result?.resultCode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
runCatching {
ArctosLinks.getInstance(Context).conferenceManager.hostStartShareScreen(
result.resultCode,
result.data!!
).getOrThrow()
}.onSuccess {
Log.d(TAG, "Successfully start share screen")
}.onFailure {
Log.d(TAG, "Failed : ${it.message}")
}
}
} else {
runCatching {
ArctosLinks.getInstance(Context).conferenceManager.hostStopShareScreen().getOrThrow()
}.onFailure {
Log.d(TAG, "Failed to stop share screen: ${it.message} ")
}
}
}
private fun startShareScreen() {
val mediaProjectionManager: MediaProjectionManager =
requireContext().getSystemService(Context.MEDIA_PROJECTION_SERVICE) as MediaProjectionManager
screenProjectionLauncher.launch(mediaProjectionManager.createScreenCaptureIntent())
}
停用螢幕分享¶
功能:停用螢幕分享。
返回值:如果成功停用則完成,若是使用時發生例外狀況,則返回錯誤。
import com.arctos.sdk.links.core.application.ArctosLinks
private fun stopShareScreen() {
runCatching {
ArctosLinks.getInstance(Context).conferenceManager.hostStopShareScreen()
.getOrThrow()
}.onSuccess {
Log.d(TAG, "Successfully stop Share Screen")
}.onFailure {
Log.d(TAG, "Failed : ${it.message}")
}
}