Android 入门第九讲02-视频(本地视频播放,暂停,获取播放时间,重新播放,播放到指定位置,MediaController类(实现进度条,快进,播放暂停),播放网络视频)

Android 入门第九讲02-视频(本地视频播放,暂停,获取播放时间,重新播放,播放到指定位置,MediaController类(实现进度条,快进,播放暂停),播放网络视频)


Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲)

准备

先导入我们需要用到的音频文件和视频文件

1.储存在raw文件夹

第一步,创建raw文件夹
在这里插入图片描述
导入文件
在这里插入图片描述

2.储存在assets文件夹

第一步,创建assets文件夹
在这里插入图片描述
第二步导入文件
在这里插入图片描述

1.视频

1.播放视频

第一步,添加布局文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="40dp"
        android:layout_marginLeft="40dp"
        android:layout_marginTop="106dp"
        android:text="播放视频"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="40dp"
        android:layout_marginRight="40dp"
        android:text="暂停播放"
        app:layout_constraintBottom_toBottomOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent" />

    <VideoView
        android:id="@+id/videoView"
        android:layout_width="0dp"
        android:layout_height="300dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toBottomOf="@id/button2" />

</androidx.constraintlayout.widget.ConstraintLayout>

在这里插入图片描述
第二步,实例化控件,并且获取文件路径并且调用播放方法

public class MainActivity extends AppCompatActivity {

    VideoView mVideoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mVideoView=findViewById(R.id.videoView);//实例化控件

        Button button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //获取视频路径
                String path="android.resource://" + getPackageName() + "/" +R.raw.d1;;
                mVideoView.setVideoPath(path);
                //播放视频
                mVideoView.start();

            }
        });


    }
}

其他获取文件方式
data/data/包名目录

String path="data/data/包名/d1.mp4";//data/data/包名目录            

sdcard目录

  String sdcardpath="sdcard/d1.mp4";//sdcard目录 需要动态申请权限

运行
在这里插入图片描述

2.暂停播放

代码
调用pause方法

Button button1=findViewById(R.id.button2);
        button1.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {


                //暂停播放
                mVideoView.pause();




            }
        });

在这里插入图片描述

3.获取播放时间

有时候需要用到进度条功能,获取当前播放的时间位置和总时长

代码

   Button button1=findViewById(R.id.button2);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                //暂停播放
                mVideoView.pause();
                Log.i("Mainactivity","当前播放时间"+mVideoView.getCurrentPosition());

                Log.i("Mainactivity","视频总时长"+mVideoView.getDuration());
                
            }
        });

运行

4.重新播放

有时候用户可能在看完一遍以后想要重播,这个时候我们就不需要重新去获取文件,只需要调用resume方法就可实现重新播放

Button button1=findViewById(R.id.button2);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                //重新播放
                mVideoView.resume();

                
                Log.i("Mainactivity","当前播放时间:"+mVideoView.getCurrentPosition()+"ms");

                Log.i("Mainactivity","视频总时长:"+mVideoView.getDuration()+"ms");

            }
        });

运行
在这里插入图片描述

5.播放到指定位置

在用一个拖动进度条改变视频播放的时间位置时,我们需要让视频播放指定时间位置,也是需要用到seekto 这个方法

 Button button1=findViewById(R.id.button2);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                //播放视频时间在 50 秒的时候
                mVideoView.seekTo(50*1000);

                Log.i("Mainactivity","当前播放时间:"+mVideoView.getCurrentPosition()+"ms");

            }
        });

运行(点击按钮播放视频的50秒的位置)
在这里插入图片描述

6.MediaController类(实现进度条,快进,播放暂停)

但是这样不好的地方就是进度条等样式不能修改,如果需要自定义的话,可以结合上面的方法自己来制定

在这里插入图片描述

  Button button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                    //获取视频路径
                    String path="android.resource://" + getPackageName() + "/" +R.raw.d1;;
                    mVideoView.setVideoPath(path);


                MediaController mediaController=new MediaController(MainActivity.this);
                mVideoView.setMediaController(mediaController);

                //播放视频
                mVideoView.start();

            }
        });

运行(实现了进度条等多个功能)
在这里插入图片描述

7.播放网络视频

第一步,添加权限

<uses-permission android:name="android.permission.INTERNET"/>

application结点下添加

android:usesCleartextTraffic="true"

在这里插入图片描述
第三步,获取网络视频路径,缓冲再播放

 Button button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                //网络视频
                mVideoView.setVideoURI(Uri.parse("http://148.70.46.9/456.mp4"));
                mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mp) {//缓冲
                        //播放视频
                        mVideoView.start();
                    }
                });


            }
        });

第三步,卸载应用(因为添加了权限,所以需要重新生成应用)
在这里插入图片描述
最后运行(可以看到,播放网络视频缓冲时间会比较久,大概在10秒左右)
在这里插入图片描述
关于播放视频的知识就也讲到这里啦,是不是特别的简单,谢谢您的阅读。
Android 入门第九讲03-动画(帧动画(点击开始,停止)+补间动画(透明度动画,缩放动画,位移动画,旋转动画,组合动画))
在这里插入图片描述
博主为了可以学到更多的Android知识,创建了一个安卓知识交流群,欢迎大佬入群,当然也欢迎和我一样的安卓小白,我们可以一起交流,最重要的是快乐水群,记得定个小目标,冲击bat

在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: MediaControllerAndroid中的一个媒体控制器类,可以用于控制视频播放器的播放暂停等操作。要实现播放下一个视频的功能,可以按照以下步骤行: 1. 首先,需要获得当前正在播放视频的信息,包括视频的URL或本地路径等。可以通过调用MediaPlayer的getCurrentPosition()方法获取当前视频播放位置,并结合视频列表的索引来确定下一个视频位置。 2. 接下来,需要根据下一个视频位置,更新播放器的资源。可以通过调用MediaPlayer的setDataSource()方法,传入下一个视频的URL或本地路径来更新媒体资源。 3. 然后,重新准备播放器以加载下一个视频。可以调用MediaPlayer的prepare()方法来准备播放器。 4. 最后,启动媒体控制器来播放下一个视频。可以调用MediaController的start()方法来开始播放。 需要注意的是,以上步骤仅适用于使用MediaPlayer和MediaController视频播放的情况。如果使用其他视频播放库或自定义实现视频播放器,可能需要针对具体的实现行相应的调整。 此外,为了良好的用户体验,还可以在切换视频时增加过渡效果,例如淡入淡出效果或切换动画等,以避免突兀的切换。这可以通过使用动画效果或过渡动画来实现。 总之,通过获取当前视频信息、更新媒体资源、重新准备播放器和启动媒体控制器,即可实现MediaController播放下一个视频的功能。 ### 回答2: 要让MediaController实现播放下一个视频,可以采取以下步骤: 1. 首先,确认MediaController已经与MediaPlayer或其他视频播放组件(如VideoView)关联。这可以通过调用setMediaPlayer()或setAnchorView()方法来实现。 2. 接下来,需要获取视频列表或播放队列,以确保有可用的下一个视频。可以通过创建一个包含视频URL或其他ID的列表来实现。如果使用VideoView,可以使用setVideoPath()方法设置视频路径。 3. 当需要切换到下一个视频时,可以通过监听MediaController的一些回调方法来触发。其中最常用的是实现MediaController.MediaPlayerControl接口中的onCompletion()方法。当当前视频播放完成时,onCompletion()方法将被调用。在这个方法中,可以执行逻辑来切换到下一个视频。 4. 在onCompletion()方法中,可以使用MediaPlayer或VideoView的相关方法来行切换。比如,可以使用setVideoURI()方法设置下一个视频的URI,然后调用start()方法来开始播放下一个视频。 需要注意的是,实现这个功能也取决于所使用的视频播放组件和播放库的特定实现。在一些情况下,可能需要使用其他的方法或回调来实现播放下一个视频的功能。因此,具体实现步骤可能会因播放器库的不同而有所变化。 ### 回答3: 要使用MediaController播放下一个视频,您可以按照以下步骤行操作: 1. 首先,确保您已经初始化了MediaPlayer对象,并且已经设置了正确的数据源和准备完成的监听器。 2. 创建一个MediaController对象,并将其与MediaPlayer对象行绑定。这可以通过调用MediaPlayer对象的setMediaController()方法实现。 3. 在MediaController中,您可以添加一个监听器来监听下一个按钮的点击事件。例如,您可以使用setPrevNextListeners()方法来设置这个监听器。 4. 在监听器中,当下一个按钮被点击时,您可以调用MediaPlayer对象的seekTo()方法将播放位置设置为0,即播放下一个视频。例如,您可以使用seekTo()方法来实现这一功能。 5. 最后,调用MediaController对象的show()方法来显示控制器,以便用户可以看到和操作它。 通过这些步骤,您就可以使用MediaController播放下一个视频了。当用户点击下一个按钮时,视频播放器将播放列表中的下一个视频

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rose J

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值