【Android实现 资源路径/手机内存/网络文件 下的视频播放】

这篇具有很好参考价值的文章主要介绍了【Android实现 资源路径/手机内存/网络文件 下的视频播放】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

业务场景:安卓实现播放视频的功能,支持播放不同类型资源下的视频,下面在使用中封装了一个方法,可以根据需要修改调用

一、直接上封装方法

void videoReady(String videoPath ,String videoType){
        switch (videoType) {
            case "network":
                // 处理网络文件的播放逻辑
                // videoPath = "http://example.com/video.mp4" (网络视频的URL)
                videoView = findViewById(R.id.video_view);
                videoView.setVideoURI(Uri.parse(videoPath));
                break;
            case "resource":
                // 处理资源路径下的文件的播放逻辑
                // videoPath = "video_example" (资源文件名,例如raw文件夹下的video_example.mp4)
                videoView = findViewById(R.id.video_view);
                String packageName = getPackageName();
                int resId = getResources().getIdentifier(videoPath, "raw", packageName);
                videoView.setVideoURI(Uri.parse("android.resource://" + packageName + "/" + resId));
                break;
            case "local":
                // 处理手机内置的文件的播放逻辑
                //  videoPath = "/storage/emulated/0/videos/video.mp4" (手机内部存储的视频文件路径)
                videoView = findViewById(R.id.video_view);
                videoView.setVideoPath(videoPath);
                break;
            default:
                // 处理其他情况的播放逻辑
                videoView = findViewById(R.id.video_view);
                int resId2 = getResources().getIdentifier("numlive", "raw", getPackageName());
                videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + resId2));
                break;
        }

        // 初始化VideoView
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                // 设置视频填充模式为全屏
//                mp.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
                // 设置屏幕为横屏
//                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                mp.setScreenOnWhilePlaying(true);
//                mp.setVolume(0, 0);
                mp.start();
            }
        });
    }

二、解释

这段代码是一个视频播放器的方法。根据传入的视频路径和视频类型,它会选择不同的播放逻辑。
如果视频类型是"network",则会处理网络文件的播放逻辑。视频路径是网络视频的URL,通过VideoView的setVideoURI方法设置视频的播放地址。
如果视频类型是"resource",则会处理资源路径下的文件的播放逻辑。视频路径是资源文件名,例如raw文件夹下的video_example.mp4。通过获取应用程序的包名和资源ID,然后通过VideoView的setVideoURI方法设置视频的播放地址。
如果视频类型是"local",则会处理手机内置的文件的播放逻辑。视频路径是手机内部存储的视频文件路径,通过VideoView的setVideoPath方法设置视频的播放路径。
如果视频类型不是上述三种情况,则会处理其他情况的播放逻辑。这里使用了一个默认的视频资源作为演示,通过获取应用程序的包名和默认视频资源的ID,然后通过VideoView的setVideoURI方法设置视频的播放地址。
在方法中还有一些其他操作,如设置VideoView的准备监听器,当视频准备好后,会进行一些设置,如设置视频填充模式为全屏、设置屏幕为横屏、设置屏幕常亮等。最后调用MediaPlayer的start方法开始播放视频。文章来源地址https://www.toymoban.com/news/detail-601197.html

到了这里,关于【Android实现 资源路径/手机内存/网络文件 下的视频播放】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 报错,闪退(错误)日志保存到手机内存中,以文本文件的形式保存

    1.直接贴代码 2.在Application中进行初始化 3.修改mainfests,添加权限,修改application节点。需要配置全局启动类,不然不会启动MyApplication 类。还有需要注意,如果是安卓6.0以上的系统需要动态申请权限(读写文件权限)。 就是图片中的权限

    2024年02月16日
    浏览(57)
  • 14. Vuepress2.x 非根目录下的资源路径配置

    方案一 推荐 : VuePress 提供了内置的一个 helper  $withBase (它被注入到了 Vue 的原型上),可以帮助你生成正确的路径。 方案二 不推荐 :仅在 根 目录下的文件 README.MD (docsREADME.md)中有效,且不加 /

    2024年02月12日
    浏览(37)
  • Unity 常用路径及获取目标路径下的所有文件

    Unity 常用路径及获取目标路径下的所有文件 获取项目所在绝对路径 Application路径  AssetDatabase路径方法

    2024年02月11日
    浏览(47)
  • Java 多种获取项目路径下的文件

    目标文件放在项目的resources文件夹下 的 mytxt文件里面,文件名叫 file Test.txt: 其实可以看到,项目运行后,这个文件被丢到了target文件夹下: 拿到这个文件的 InputStream : 比如我们在FileUtil里面写个获取文件流的方法, public class FileUtil {      }   ① getResourceAsStream  String

    2024年02月04日
    浏览(42)
  • 蓝牙通信 Android开发实现手机间通过蓝牙传输文件

    MainActivity.java 根据以上代码的结构和功能,我会将它们分为以下几部分: 权限请求和检查 requestPermissions() 方法 checkLocationPermission() 方法 onRequestPermissionsResult() 方法 初始化和设置 onCreate() 方法 onStart() 方法 onActivityResult() 方法 蓝牙设备搜索和配对 discoverDevices() 方法 与列表交互

    2024年03月27日
    浏览(51)
  • Springboot获取jar包中resources资源目录下的文件

            今天在项目中遇到一个业务场景,需要用到 resources 资源目录 下的文件,然后就在思考一个问题:         当项目打成jar后,Springboot要如何获取resources 资源目录下的文件呢?         如题,如何在项目打成jar包之后,在代码中依然能够获取到jar包中resources资源目录

    2024年02月11日
    浏览(46)
  • 【Unity】编辑器下查找指定文件下的所有特定资源

            需求上很简单,就是在编辑器下,找到某个制定文件下的所有特定资源(UnityEngine.Object)。Unity 没有提供专门的 API,我一开始想在网上搜索代码,发现没有现成可以直接用的。         功能实现本身并不复杂,代码也比较直观:         其实就是借用 System.IO 的代

    2024年02月11日
    浏览(43)
  • 【Unity】编辑器下查找制定文件下的所有特定资源

            需求上很简单,就是在编辑器下,找到某个制定文件下的所有特定资源(UnityEngine.Object)。Unity 没有提供专门的 API,我一开始想在网上搜索代码,发现没有现成可以直接用的。         功能实现本身并不复杂,代码也比较直观:         其实就是借用 System.IO 的代

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包