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

一、直接上封装方法

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方法开始播放视频。