我正在使用图像的属性来设置媒体播放器的边界。该应用程序崩溃并出现以下错误: 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)
显然您尝试使用 AssetManager 打开一个名为“qrcode”的文件,但没有找到它。检查该文件是否在您的项目中或者是否位于正确的路径中。