@@ -23,11 +23,13 @@ import androidx.compose.runtime.ExperimentalComposeApi
2323import androidx.compose.runtime.remember
2424import androidx.compose.ui.platform.LocalContext
2525import androidx.compose.ui.unit.dp
26+ import androidx.media3.common.C
2627import androidx.media3.common.MediaItem
2728import androidx.media3.exoplayer.ExoPlayer
2829import androidx.xr.compose.spatial.Subspace
2930import androidx.xr.compose.subspace.SpatialExternalSurface
3031import androidx.xr.compose.subspace.StereoMode
32+ import androidx.xr.compose.subspace.SurfaceProtection
3133import androidx.xr.compose.subspace.layout.SubspaceModifier
3234import androidx.xr.compose.subspace.layout.height
3335import androidx.xr.compose.subspace.layout.width
@@ -72,3 +74,47 @@ fun SpatialExternalSurfaceContent() {
7274 }
7375}
7476// [END androidxr_compose_SpatialExternalSurfaceStereo]
77+
78+ // [START androidxr_compose_SpatialExternalSurfaceDRM]
79+ @OptIn(ExperimentalComposeApi ::class )
80+ @Suppress(" RestrictedApi" ) // b/416066566
81+ @Composable
82+ fun DrmSpatialVideoPlayer () {
83+ val context = LocalContext .current
84+ Subspace {
85+ SpatialExternalSurface (
86+ modifier = SubspaceModifier
87+ .width(1200 .dp)
88+ .height(676 .dp),
89+ stereoMode = StereoMode .SideBySide ,
90+ surfaceProtection = SurfaceProtection .Protected
91+ ) {
92+ val exoPlayer = remember { ExoPlayer .Builder (context).build() }
93+
94+ // Define the URI for your DRM-protected content and license server.
95+ val videoUri = " https://your-content-provider.com/video.mpd"
96+ val drmLicenseUrl = " https://your-license-server.com/license"
97+
98+ // Build a MediaItem with the necessary DRM configuration.
99+ val mediaItem = MediaItem .Builder ()
100+ .setUri(videoUri)
101+ .setDrmConfiguration(
102+ MediaItem .DrmConfiguration .Builder (C .WIDEVINE_UUID )
103+ .setLicenseUri(drmLicenseUrl)
104+ .build()
105+ )
106+ .build()
107+
108+ onSurfaceCreated { surface ->
109+ // The created surface is secure and can be used by the player.
110+ exoPlayer.setVideoSurface(surface)
111+ exoPlayer.setMediaItem(mediaItem)
112+ exoPlayer.prepare()
113+ exoPlayer.play()
114+ }
115+
116+ onSurfaceDestroyed { exoPlayer.release() }
117+ }
118+ }
119+ }
120+ // [END androidxr_compose_SpatialExternalSurfaceDRM]
0 commit comments