Android MediaPlayer 在 openFd 上崩溃

问题描述 投票:0回答:1

我正在使用图像的属性来设置媒体播放器的边界。该应用程序崩溃并出现以下错误: requireContext().assets.openFd(imagename)

有什么想法吗?

player = MediaPlayer().apply {
                                        requireContext().assets.openFd(imagename)
                                            .use { descriptor ->

                                                val metadataRetriever = MediaMetadataRetriever()
                                                metadataRetriever.setDataSource(
                                                    descriptor.fileDescriptor,
                                                    descriptor.startOffset,
                                                    descriptor.length
                                                )

                                                val videoWidth = metadataRetriever.extractMetadata(METADATA_KEY_VIDEO_WIDTH)
                                                    ?.toFloatOrNull()
                                                    ?: 0f
                                                val videoHeight = metadataRetriever.extractMetadata(METADATA_KEY_VIDEO_HEIGHT)
                                                    ?.toFloatOrNull()
                                                    ?: 0f
                                                val videoRotation = metadataRetriever.extractMetadata(METADATA_KEY_VIDEO_ROTATION)
                                                    ?.toFloatOrNull()
                                                    ?: 0f

                                                // Account for video rotation, so that scale logic math works properly
                                                val imageSize = RectF(0f, 0f, augmentedImage.extentX, augmentedImage.extentZ)
                                                    .transform(rotationMatrix(videoRotation))

                                                val videoScaleType = VideoScaleType.CenterCrop

                                                videoAnchorNode.setVideoProperties(
                                                    videoWidth = videoWidth, videoHeight = videoHeight, videoRotation = videoRotation,
                                                    imageWidth = imageSize.width(), imageHeight = imageSize.height(),
                                                    videoScaleType = videoScaleType
                                                )
                                            }

致命异常:主要 进程:io.github.sceneview.sample.araugmentedimage,PID:2250 java.lang.RuntimeException:java.lang.reflect.InitationTargetException 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:588) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) 引起原因:java.lang.reflect.InitationTargetException 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) 引起原因:java.io.FileNotFoundException:qrcode 在 android.content.res.AssetManager.nativeOpenAssetFd(本机方法) 在 android.content.res.AssetManager.openFd(AssetManager.java:1011) 在 io.github.sceneview.sample.araugmentedimage.MainFragment$onViewCreated$1$2.invoke(MainFragment.kt:77) 在 io.github.sceneview.sample.araugmentedimage.MainFragment$onViewCreated$1$2.invoke(MainFragment.kt:59) 在io.github.sceneview.ar.ARSceneView.onSessionUpdated(ARSceneView.kt:324) 在io.github.sceneview.ar.ARSceneView.onFrame(ARSceneView.kt:278) 在 io.github.sceneview.SceneView$frameCallback$1.doFrame(SceneView.kt:295) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:1687) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:1698) 在 android.view.Choreographer.doCallbacks(Choreographer.java:1153) 在 android.view.Choreographer.doFrame(Choreographer.java:1069) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1646) 在 android.os.Handler.handleCallback(Handler.java:958) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loopOnce(Looper.java:230) 在 android.os.Looper.loop(Looper.java:319) 在 android.app.ActivityThread.main(ActivityThread.java:8919) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

android arcore
1个回答
0
投票

显然您尝试使用 AssetManager 打开一个名为“qrcode”的文件,但没有找到它。检查该文件是否在您的项目中或者是否位于正确的路径中。

© www.soinside.com 2019 - 2024. All rights reserved.