Caused by java.io.FileNotFoundException res/drawable-xhdpi-v4/exo_icon_vr.png
Version
Media3 1.4.1
More version details
No response
Devices that reproduce the issue
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Yes
Reproduction steps
No idea
Expected result
The texture view player plays successfully
Actual result
The app crashes with the following full stack trace:
Fatal Exception: android.view.InflateException: Binary XML file line #9 in com.my.app:layout/player_view: Binary XML file line #9 in com.my.app:layout/player_view: Error inflating class androidx.media3.ui.PlayerView
Caused by android.view.InflateException: Binary XML file line #9 in com.my.app:layout/player_view: Error inflating class androidx.media3.ui.PlayerView
Caused by java.lang.reflect.InvocationTargetException:
at java.lang.reflect.Constructor.newInstance0(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at com.my.app.presenters.ui.common.video_player.TextureVideoPlayerKt.TextureVideoPlayer$lambda$2(TextureVideoPlayer.kt:36)
at androidx.compose.ui.viewinterop.ViewFactoryHolder.<init>(AndroidView.android.kt:344)
at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1$1.invoke(AndroidView.android.kt:275)
at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1$1.invoke(AndroidView.android.kt)
at androidx.compose.runtime.changelist.Operation$InsertNodeFixup.execute(Operation.kt:585)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:310)
at androidx.compose.runtime.changelist.FixupList.executeAndFlushAllPendingFixups(FixupList.kt:50)
at androidx.compose.runtime.changelist.Operation$InsertSlotsWithFixups.execute(Operation.kt:552)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:310)
at androidx.compose.runtime.changelist.ChangeList.executeAndFlushAllPendingChanges(ChangeList.kt:81)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1013)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:685)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$setScheduledFrameDispatch$p(AndroidUiDispatcher.android.kt)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1404)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415)
at android.view.Choreographer.doCallbacks(Choreographer.java:1015)
at android.view.Choreographer.doFrame(Choreographer.java:941)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8590)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:585)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
Caused by android.view.InflateException: Binary XML file line #64 in com.my.app:layout/exo_player_control_view: Binary XML file line #64 in com.my.app:layout/exo_player_control_view: Error inflating class android.widget.ImageButton
Caused by android.view.InflateException: Binary XML file line #64 in com.my.app:layout/exo_player_control_view: Error inflating class android.widget.ImageButton
Caused by java.lang.reflect.InvocationTargetException:
at java.lang.reflect.Constructor.newInstance0(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createView(LayoutInflater.java:664)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:818)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:838)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:892)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.inflate(LayoutInflater.java:540)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at android.view.LayoutInflater.inflate(LayoutInflater.java:413)
at androidx.media3.ui.PlayerControlView.<init>(PlayerControlView.java:584)
at androidx.media3.ui.PlayerView.<init>(PlayerView.java:575)
at androidx.media3.ui.PlayerView.<init>(PlayerView.java:345)
at java.lang.reflect.Constructor.newInstance0(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at com.my.app.presenters.ui.common.video_player.TextureVideoPlayerKt.TextureVideoPlayer$lambda$2(TextureVideoPlayer.kt:36)
at androidx.compose.ui.viewinterop.ViewFactoryHolder.<init>(AndroidView.android.kt:344)
at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1$1.invoke(AndroidView.android.kt:275)
at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1$1.invoke(AndroidView.android.kt)
at androidx.compose.runtime.changelist.Operation$InsertNodeFixup.execute(Operation.kt:585)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:310)
at androidx.compose.runtime.changelist.FixupList.executeAndFlushAllPendingFixups(FixupList.kt:50)
at androidx.compose.runtime.changelist.Operation$InsertSlotsWithFixups.execute(Operation.kt:552)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:310)
at androidx.compose.runtime.changelist.ChangeList.executeAndFlushAllPendingChanges(ChangeList.kt:81)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1013)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:685)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$setScheduledFrameDispatch$p(AndroidUiDispatcher.android.kt)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1404)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415)
at android.view.Choreographer.doCallbacks(Choreographer.java:1015)
at android.view.Choreographer.doFrame(Choreographer.java:941)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8590)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:585)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
Caused by android.content.res.Resources$NotFoundException: Drawable com.my.app:drawable/exo_icon_vr with resource ID #0x7f0800fe
Caused by android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-v4/exo_icon_vr.png from drawable resource ID #0x7f0800fe
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:986)
at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:754)
at android.content.res.Resources.loadDrawable(Resources.java:1011)
at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:1021)
at android.content.res.TypedArray.getDrawable(TypedArray.java:995)
at android.widget.ImageView.<init>(ImageView.java:205)
at android.widget.ImageButton.<init>(ImageButton.java:91)
at android.widget.ImageButton.<init>(ImageButton.java:87)
at android.widget.ImageButton.<init>(ImageButton.java:83)
at java.lang.reflect.Constructor.newInstance0(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createView(LayoutInflater.java:664)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:818)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:838)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:892)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.inflate(LayoutInflater.java:540)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at android.view.LayoutInflater.inflate(LayoutInflater.java:413)
at androidx.media3.ui.PlayerControlView.<init>(PlayerControlView.java:584)
at androidx.media3.ui.PlayerView.<init>(PlayerView.java:575)
at androidx.media3.ui.PlayerView.<init>(PlayerView.java:345)
at java.lang.reflect.Constructor.newInstance0(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at com.my.app.presenters.ui.common.video_player.TextureVideoPlayerKt.TextureVideoPlayer$lambda$2(TextureVideoPlayer.kt:36)
at androidx.compose.ui.viewinterop.ViewFactoryHolder.<init>(AndroidView.android.kt:344)
at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1$1.invoke(AndroidView.android.kt:275)
at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1$1.invoke(AndroidView.android.kt)
at androidx.compose.runtime.changelist.Operation$InsertNodeFixup.execute(Operation.kt:585)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:310)
at androidx.compose.runtime.changelist.FixupList.executeAndFlushAllPendingFixups(FixupList.kt:50)
at androidx.compose.runtime.changelist.Operation$InsertSlotsWithFixups.execute(Operation.kt:552)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:310)
at androidx.compose.runtime.changelist.ChangeList.executeAndFlushAllPendingChanges(ChangeList.kt:81)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1013)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:685)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$setScheduledFrameDispatch$p(AndroidUiDispatcher.android.kt)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1404)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415)
at android.view.Choreographer.doCallbacks(Choreographer.java:1015)
at android.view.Choreographer.doFrame(Choreographer.java:941)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8590)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:585)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
Caused by java.io.FileNotFoundException: res/drawable-xhdpi-v4/exo_icon_vr.png
at android.content.res.AssetManager.nativeOpenNonAsset(AssetManager.java)
at android.content.res.AssetManager.openNonAsset(AssetManager.java:1040)
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:975)
at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:754)
at android.content.res.Resources.loadDrawable(Resources.java:1011)
at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:1021)
at android.content.res.TypedArray.getDrawable(TypedArray.java:995)
at android.widget.ImageView.<init>(ImageView.java:205)
at android.widget.ImageButton.<init>(ImageButton.java:91)
at android.widget.ImageButton.<init>(ImageButton.java:87)
at android.widget.ImageButton.<init>(ImageButton.java:83)
at java.lang.reflect.Constructor.newInstance0(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createView(LayoutInflater.java:664)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:818)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:838)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:892)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1011)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:972)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1014)
at android.view.LayoutInflater.inflate(LayoutInflater.java:540)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at android.view.LayoutInflater.inflate(LayoutInflater.java:413)
at androidx.media3.ui.PlayerControlView.<init>(PlayerControlView.java:584)
at androidx.media3.ui.PlayerView.<init>(PlayerView.java:575)
at androidx.media3.ui.PlayerView.<init>(PlayerView.java:345)
at java.lang.reflect.Constructor.newInstance0(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:742)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:894)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:849)
at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
at android.view.LayoutInflater.inflate(LayoutInflater.java:462)
at com.my.app.presenters.ui.common.video_player.TextureVideoPlayerKt.TextureVideoPlayer$lambda$2(TextureVideoPlayer.kt:36)
at androidx.compose.ui.viewinterop.ViewFactoryHolder.<init>(AndroidView.android.kt:344)
at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1$1.invoke(AndroidView.android.kt:275)
at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1$1.invoke(AndroidView.android.kt)
at androidx.compose.runtime.changelist.Operation$InsertNodeFixup.execute(Operation.kt:585)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:310)
at androidx.compose.runtime.changelist.FixupList.executeAndFlushAllPendingFixups(FixupList.kt:50)
at androidx.compose.runtime.changelist.Operation$InsertSlotsWithFixups.execute(Operation.kt:552)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:310)
at androidx.compose.runtime.changelist.ChangeList.executeAndFlushAllPendingChanges(ChangeList.kt:81)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1013)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:685)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$setScheduledFrameDispatch$p(AndroidUiDispatcher.android.kt)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1404)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415)
at android.view.Choreographer.doCallbacks(Choreographer.java:1015)
at android.view.Choreographer.doFrame(Choreographer.java:941)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8590)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:585)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
the issue seems to be related to Caused by java.io.FileNotFoundException res/drawable-xhdpi-v4/exo_icon_vr.png.
my code:
<?xml version="1.0" encoding="utf-8"?>
<androidx.media3.ui.PlayerView android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:use_controller="false"
app:resize_mode="zoom"
xmlns:android="http://schemas.android.com/apk/res/android"
app:surface_type="texture_view"
android:id="@+id/playerView"/>
import android.view.LayoutInflater
import androidx.annotation.OptIn
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.AndroidView
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.Lifecycle
import androidx.media3.common.PlaybackException
import androidx.media3.common.Player
import androidx.media3.common.util.UnstableApi
import androidx.media3.ui.PlayerView
import com.bowerydigital.bend.R
import com.bowerydigital.bend.domain.x_functions.OnLifecycleEvent
import com.bowerydigital.bend.presenters.ui.common.video_player.model.MediaType
import com.bowerydigital.bend.presenters.ui.common.video_player.state.VideoPlayerState
import timber.log.Timber
@OptIn(UnstableApi::class)
@Composable
fun TextureVideoPlayer(
modifier: Modifier = Modifier,
videoPlayerManager: VideoPlayerState,
) {
var lifecycle by remember {
mutableStateOf(Lifecycle.Event.ON_CREATE)
}
OnLifecycleEvent { _, event ->
lifecycle = event
}
AndroidView(
modifier = modifier,
factory = { context ->
val view = LayoutInflater.from(context).inflate(R.layout.player_view, null, false)
val textView = view.findViewById<PlayerView>(R.id.playerView)
textView.player = videoPlayerManager.exoPlayer
textView
},
update = { view ->
when (lifecycle) {
Lifecycle.Event.ON_PAUSE -> {
view.onPause()
view.player?.pause()
}
Lifecycle.Event.ON_RESUME -> {
view.onResume()
}
else -> Unit
}
}
)
}
Media
Not applicable
Bug Report
- [X] You will email the zip file produced by
adb bugreportto [email protected] after filing this issue.
Hi, thanks for your report!
It does look that our VR icon differs slightly from the rest, although I thought it would just go looking here:
https://github.com/androidx/media/tree/release/libraries/ui/src/main/res/drawable-xhdpi and ignore the -v4 suffix.
It looks like it's the only one that is not in the following resource folder: https://github.com/androidx/media/tree/release/libraries/ui/src/main/res/drawable-anydpi-v21
Let me see if adding a vector drawable will solve the issue..
Hi @mattiaferigutti, has your problem been resolved? Because if not, it's ok to leave the github issue hanging, since we are using it as an official issue tracker and often pick up work from the backlog.
Hi @oceanjules! It looks like the issue has been resolved. We’re no longer seeing this bug appear in our Crashlytics dashboard.