零基础用Android Studio实现简单的本地视频播放器

这篇具有很好参考价值的文章主要介绍了零基础用Android Studio实现简单的本地视频播放器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本文将讲解如何使用Android视频播放器VideoView组件来播放本地视频和网络视频,实现起来还是比较简单的。VideoView组件的作用与ImageView类似,只是ImageView用于显示图片,VideoView用于播放视频。
(本文章的代码参考: https://www.jb51.net/article/122051.htm)
实现效果:

用Android Studio做的简单的本地视频播放器


导出的APK:
链接:https://pan.baidu.com/s/1UyqeqqEmEDlILKCP71FtJA
提取码:9tro

一、创建Android Studio项目

1.File——>New——>New Project
安卓studio 加入视频,Android Studio,android studio,音视频,android
2.
安卓studio 加入视频,Android Studio,android studio,音视频,android
3.
安卓studio 加入视频,Android Studio,android studio,音视频,android

二、在界面布局文件activity_main.xml中定义VideoView组件

安卓studio 加入视频,Android Studio,android studio,音视频,android
activity_main.xml完整代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.simplevideo.MainActivity">

    <!--主界面的三个按钮和一个播放控件-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btnPlay"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Play"
            android:textAllCaps="false" />

        <Button
            android:id="@+id/btnPause"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Pause"
            android:textAllCaps="false" />

        <Button
            android:id="@+id/btnReplay"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Replay"
            android:textAllCaps="false" />
    </LinearLayout>

    <!--VideoView 作为视频播放时的显示位置-->
    <VideoView
        android:id="@+id/vdvwFilm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

三、编辑MainActivity.java

基本思路:

  • 1.对界面的按钮和显示位置实例化。
  • 2.调用VideoView的setVideoPath(String path)方法来加载 本地path 文件所代表的视频。
    本次用到的名为big_buck_bunny.mp4的视频下载地址为:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 需要提前下载到用于测试的手机的内存根目录下。
    (若想要加载uri所对应的视频,需要使用setVideoURI(Uri uri)方法加载,在此不作详细说明。)
  • 3.对权限的取得结果进行判断,并针对性操作。
  • 4.调用VideoView的start()、stop()、pause()方法来控制视频播放。
  • 5.执行完毕,释放所有资源。

实际上与VideoView—起结合使用的还有一个MediaController类,它的作用是提供一个友好的图形控制界面,通过该控制界面来控制视频的播放。
安卓studio 加入视频,Android Studio,android studio,音视频,android
MainActivity.java完整代码:

package com.example.simplevideo;

import android.Manifest;
import android.content.pm.PackageManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.VideoView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import java.io.File;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private VideoView videoView;

    @Override
    //对界面的按钮和显示位置实例化,并检查权限
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        videoView = (VideoView)findViewById(R.id.vdvwFilm);
        Button btnPlay = (Button)findViewById(R.id.btnPlay);
        Button btnPause = (Button)findViewById(R.id.btnPause);
        Button btnReplay = (Button)findViewById(R.id.btnReplay);

        btnPlay.setOnClickListener(this);
        btnPause.setOnClickListener(this);
        btnReplay.setOnClickListener(this);

        if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }else {
            initVideoPath();//初始化MediaPlayer
        }
    }


    //用一个单独的方法来实现视频播放初始化
    private void initVideoPath() {
        //本地的视频,需要在手机内存根目录添加一个名为 big_buck_bunny.mp4 的视频
        File file = new File(Environment.getExternalStorageDirectory(), "big_buck_bunny.mp4");//指定视频文件路径
        videoView.setVideoPath(file.getPath());//加载path文件代表的视频
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true);//让视频循环播放
            }
        });
    }

    @Override
    //对权限的取得结果进行判断,并针对性操作。获得权限,执行初始化;如果没有获得权限,提示用户。
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    initVideoPath();
                } else {
                    Toast.makeText(this, "拒绝权限,无法使用程序。", Toast.LENGTH_LONG).show();
                    finish();
                }
                break;
            default:
                break;
        }
    }

    @Override
    //统一处理Play(播放)、Pause(暂停)、Replay(重新播放)的逻辑
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnPlay:
                if(!videoView.isPlaying()){
                    videoView.start();//播放
                }
                break;
            case R.id.btnPause:
                if(videoView.isPlaying()){
                    videoView.pause();//暂停
                }
                break;
            case R.id.btnReplay:
                if(videoView.isPlaying()){
                    videoView.resume();//重新播放
                }
                break;
        }
    }

    @Override
    //执行完毕,释放所有资源
    protected void onDestroy() {
        super.onDestroy();
        if(videoView != null){
            videoView.suspend();
        }
    }
}

四、在 AndroidManifest.xml 中配置相应的权限

安卓studio 加入视频,Android Studio,android studio,音视频,android
只需要加上

<!--外存储写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

AndroidManifest.xml完整代码:
安卓studio 加入视频,Android Studio,android studio,音视频,android

五、导出apk包

(详细参考:https://llw-study.blog.csdn.net/article/details/112288954?spm=1001.2014.3001.5502)
1.
安卓studio 加入视频,Android Studio,android studio,音视频,android
2.
安卓studio 加入视频,Android Studio,android studio,音视频,android
3.没有Key的话需要Create new,有的话Choose existing
安卓studio 加入视频,Android Studio,android studio,音视频,android
4.
安卓studio 加入视频,Android Studio,android studio,音视频,android
5.
安卓studio 加入视频,Android Studio,android studio,音视频,android
6.把.apk文件下载到手机上进行安装即可。
安卓studio 加入视频,Android Studio,android studio,音视频,android

六、对遇到的坑的思考

在最初,总是遇到无法播放视频+黑屏的问题,在线播放视频我也还没有实现,视频最好是自己上传的,不要用网上的视频素材,网上的视频素材人家是做了保护的措施。还有一种方法,就是使用本地视频。文章来源地址https://www.toymoban.com/news/detail-785390.html

  • 问题分析参考:
    https://www.jb51.net/article/143228.htm
  • Android使用VideoView播放本地视频和网络视频的方法(里面播放网络视频的方法可以参考):https://www.jb51.net/article/90992.htm

到了这里,关于零基础用Android Studio实现简单的本地视频播放器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Flutter视频播放器在iOS端和Android端都能实现全屏播放

    Flutter开发过程中,对于视频播放的三方组件有很多,在Android端适配都挺好,但是在适配iPhone手机的时候,如果设置了 UIInterfaceOrientationLandscapeLeft 和 UIInterfaceOrientationLandscapeRight 都为false的情况下,无法做到全屏播放,因为FLutter的 SystemChrome.setPreferredOrientations 方法不适配iOS端

    2024年02月05日
    浏览(40)
  • Android Studio 做一个 MP3 播放器

    Android Studio 本身提供了多个音频播放器组件,可以通过这些组件来实现音频播放功能,其中包括 MediaPlayer、SoundPool 和 ExoPlayer 等。官方推荐我们使用ExoPlayer因为功能更强大,但这里用MediaPlayer因为编写更简单。 在使用 MediaPlayer 实现 MP3 播放器时,需要注意以下几点: 在使用

    2024年02月04日
    浏览(50)
  • Android Studio初学者实例:仿网易音乐播放器

    本期带来的是以Service为主要的知识点的网易音乐播放器 看一下效果图  首先项目准备: 在res下新建raw文件夹,并在文件夹中添加喜爱的mp3音乐  OK,第一步,先写一个背景文件,在res/drawable文件夹中新建xml文件: btn_bg_selector.xml  编写主界面代码activity_main.xml 编写MusicServic

    2024年02月05日
    浏览(44)
  • QT简单的视频播放器

    1.功能 选择路径下的固定视频格式文件播放,对应的音频和视频同步播放 2.新建一个不含UI界面的QT工程 特别注意:QT中的路径名不能含中文   设置一个不含UI界面的工程 取消构建目录 因为要引入视频播放器的模块,我们在pro中引入对应的模块 因为要引入布局格式,所以我们

    2024年02月03日
    浏览(34)
  • Android Studio实现读取本地相册文件并展示

    原文链接 效果 代码 activity_main.xml 需要有一个按钮和image来展示图片 MainActivity

    2024年02月12日
    浏览(39)
  • Android Studio初学者实例:音乐播放器与Service学习

    本次一个案例实现的一个简单的音乐播放器 用到的知识点最主要的几点是:Service、handler(实现音乐播放的进度条更新与图片旋转)以及用于播放音频的MediaPlayer 看一下案例效果:  由于Service是Android的四大组件之一,Activity、Service等等一个重要知识点就是生命周期的问题,

    2024年02月03日
    浏览(41)
  • 6款良心本地视频播放器,功能强大还完全免费

    虽然现在很多人更习惯直接在线看视频,但相信一定还有很多和我一样更喜欢找质量更优质的资源下载到本地观看。在本地上看,就需要一个播放器才可以。 而系统自带的播放功能实在太拉胯了(支持的格式少,有些甚至需要付费才可以使用),所以这种情况我们就很有必要

    2024年02月02日
    浏览(51)
  • android 实现本地一键打包,告别繁琐的studio操作

    在实际开发项目中,我们的工程目录往往是多个app在一个工程下的,每次打包都需要手动的用studio点击Build-Generate Signed Bundle or APK-APK 选择app,签名等,甚至有的app签名还不一样,还需要手动的来回切换,非常麻烦。所以,我就考虑采用多渠道打包+shell脚本的方式,来实现一行

    2024年02月10日
    浏览(54)
  • Android Studio实现简单ListView

    效果图 MainActivity PartBean 建议重新建一个软件包 PartAdapter 适配器 建议重新建一个适配器包 activity_main.xml 顶部标题和 ListView pat_manger_item ListView中数据的展示格式

    2024年02月13日
    浏览(34)
  • Android开发之视频播放器

    今天教大家做一个简单的视频播放器hh 至此,结束!

    2023年04月09日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包