业务场景:安卓实现播放视频的功能,支持播放不同类型资源下的视频,下面在使用中封装了一个方法,可以根据需要修改调用
一、直接上封装方法
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;}// 初始化VideoViewvideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic 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方法开始播放视频。