我一直试图在VideoView中播放视频,这似乎是正常工作的情况下,当视频保存在res/raw文件夹中,但当使用视频的URL来获取和播放视频时,它似乎不起作用。我在清单文件中给出了互联网权限:<uses-permission android:name="android.permission.INTERNET"/>
使用下面的代码:
val tv:TextView=findViewById(R.id.tv)
val vv:VideoView=findViewById(R.id.vidView)
var uri= Uri.parse("http://techslides.com/demos/sample-videos/small.mp4")
//local resource playing
//var localUri=Uri.parse("android.resource://$packageName/${R.raw.blood_video}")
var mc=MediaController(this)
vv.setMediaController(mc)
vv.setVideoURI(uri)
vv.requestFocus()
vv.setOnPreparedListener {
vv.start()
}
我不打算
mc.setAnchorView(vv)
因为我看不出它有什么区别(至少在我正在研究的这样一个简单的层面上)
日志目录:
2022-07-05 14:46:06.222 18430-18430/com.example.videoapp W/MediaPlayer: Couldn't open http://techslides.com/...
java.io.FileNotFoundException: No content provider: http://techslides.com/demos/sample-videos/small.mp4
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1673)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1503)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1420)
at android.media.MediaPlayer.attemptDataSource(MediaPlayer.java:1104)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1076)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1100)
at android.widget.VideoView.openVideo(VideoView.java:412)
at android.widget.VideoView.access$2200(VideoView.java:83)
at android.widget.VideoView$7.surfaceCreated(VideoView.java:694)
at android.view.SurfaceView.updateSurface(SurfaceView.java:802)
at android.view.SurfaceView$2.onPreDraw(SurfaceView.java:171)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1088)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2930)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1811)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7970)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967)
at android.view.Choreographer.doCallbacks(Choreographer.java:791)
at android.view.Choreographer.doFrame(Choreographer.java:726)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
我在android方面没有太多的经验,但我已经检查了所有我能检查的地方,无论我写的是什么,似乎对其他人都有效。
**注意:**已在实际的Android 10设备上测试,而不是AVD。
我正在建设的应用程序的用户将需要点击和播放视频的一些职位,所以,请建议我,如果有另一个/更喜欢的方式来播放视频,因为我能找到的是这一点。
1条答案
按热度按时间yvt65v4c1#
我在Pixel 3a中遇到了同样的问题,并通过在我的AndroidManifest.xml应用程序标签上添加android:usesCleartextTraffic=“true”来解决它。
希望这对你也有效