media icon indicating copy to clipboard operation
media copied to clipboard

Caused by java.io.FileNotFoundException res/drawable-xhdpi-v4/exo_icon_vr.png

Open mattiaferigutti opened this issue 1 year ago • 1 comments

Version

Media3 1.4.1

More version details

No response

Devices that reproduce the issue

CleanShot 2024-10-18 at 01 31 45@2x

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 bugreport to [email protected] after filing this issue.

mattiaferigutti avatar Oct 17 '24 23:10 mattiaferigutti

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..

oceanjules avatar Oct 18 '24 17:10 oceanjules

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.

oceanjules avatar Apr 23 '25 19:04 oceanjules

Hi @oceanjules! It looks like the issue has been resolved. We’re no longer seeing this bug appear in our Crashlytics dashboard.

mattiaferigutti avatar Apr 29 '25 15:04 mattiaferigutti