时,遇到了java.io.FileNotFoundException我有以下代码:使用VideoView
VideoView videoView = (VideoView)findViewById(R.id.instructionsvideo);
assert videoView != null;
videoView.setVideoPath("android.resource://" + getPackageName() + R.raw.testnatureclip);
videoView.start();
“testnatureclip” 位于原文件夹:
出于某种原因后,我建立该项目文件变成红色。
这里是我的错误: com.roymunson.vroy.copypastakeyboard W/MediaPlayer: Couldn't open file on client side; trying server side: java.io.FileNotFoundException: No package found for authority: android.resource://com.roymunson.vroy.copypastakeyboard2131165184
的MP4应该以H.264格式编码的,但我不知道如果在线编码服务我用工作。
此外,如果重要的话,videoview的尺寸与文件尺寸不一样。
什么问题?文件路径不正确,或者我在初始化videoview时缺少一些元素?
更新一个:
使用User8的解决方案,我得到了以下错误:
roymunson.vroy.copypastakeyboard W/MediaPlayer: Couldn't open file on client side; trying server side: java.io.FileNotFoundException: No content provider: /2131165184
10-01 17:36:20.912 28156-28156/com.roymunson.vroy.copypastakeyboard W/VideoView: Unable to open content: /2131165184
java.io.IOException: setDataSource failed.
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1100)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1074)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1028)
at android.widget.VideoView.openVideo(VideoView.java:346)
at android.widget.VideoView.-wrap0(VideoView.java)
at android.widget.VideoView$7.surfaceCreated(VideoView.java:623)
at android.view.SurfaceView.updateWindow(SurfaceView.java:582)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:177)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1119)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6060)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
我在发布时正在编辑我的答案。 +1是的,只需使用Uri方法即可。关于'getPackageResourcePath()',试试'String uriPath = getPackageResourcePath()+“/ raw/testnatureclip”;'缩短代码。 – user8