Android VideoView播放视频

假如你这个播放视频很简单的一个播放功能,没有其他的特殊要求,那么VideoView播放肯定是最好的选择,当然别人封装好的

使用也是很不错的选择

下面先写一个简单的网络播放

首先在配置文件中,添加联网的权限

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

然后就是布局呢

  <VideoView
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="230dp"/>

代码加载播放

 private VideoView videoView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        videoView = findViewById(R.id.video_view);
        //网络视频
        videoView.setVideoPath("https://flv2.bn.netease.com/videolib1/1811/26/OqJAZ893T/HD/OqJAZ893T-mobile.mp4");
        videoView.start();//开始播放
        videoView.requestFocus();//获取焦点

一个简单的播放网络视频很简单的实现了

现在把视频放到了as 工具内播放

在布局中创建了一个raw 文件夹 里面放一个视频如下

布局换是一个VideoView 看下代码实现

 private VideoView videoView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inner_activity_layout);
        videoView = findViewById(R.id.video_view);
        //as 工具内的视频
        String uri = ("android.resource://" + getPackageName() + "/" + R.raw.me);
        videoView.setVideoURI(Uri.parse(uri));
        videoView.start();

以上就是显示放到工具类视频的播放

假如显示播放视频手机或者机器内存了里面的是视频

这个说明的就是高版本的需要读取内存的权限

下面是有一个text 点击手动开启权限,然后在读取内存里面的视频

public class LocalActivity extends AppCompatActivity {
    private TextView textView;
    private VideoView videoView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.local_activity_layout);
        textView = findViewById(R.id.txt);
        videoView = findViewById(R.id.video_view2);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (Build.VERSION.SDK_INT >= 23) {
                    int REQUEST_CODE_CONTACT = 101;
                    String[] permissions = {
                            Manifest.permission.WRITE_EXTERNAL_STORAGE};
                    //验证是否许可权限
                    for (String str : permissions) {
                        if (LocalActivity.this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
                            //申请权限
                            LocalActivity.this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
                            return;
                        } else {
                            //手机本地的视频
                            String path = Environment.getExternalStorageDirectory() + "/one.mp4";
                            Log.e("path", Environment.getExternalStorageDirectory().toString());
                            videoView.setVideoPath(path);
                            videoView.start();
                        }
                    }
                }

            }
        });
    }
}

了解以上视频的播放方式之后再看下VideoView的其他功能

1 视频开始的方法  videoView.start();

2 视频暂停的方法  videoView.pause();

3 视频快进的方法 videoView.seekTo(5*1000); //快进5秒

4 视频播放完毕监听的方法

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        videoView.start();
        Toast.makeText(InnerActivity.this, "播放完了再来一次", Toast.LENGTH_SHORT).show();
    }
});

5 设置控制器

videoView.setMediaController(new MediaController(this)); 

系统默认的控制器很不好使用,位置默认在下面,需要自定义修改下位置

6 设置静音的方法

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
        mp.setVolume(0f,0f);
    }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值