Android Studio 用 VideoView 控件播放本地视频 - MilkeZhang 的网络笔记

记录一下,Android Studio通过使用VideoView控件播放本地的视频工鞥呢注意两点,是一个是视频的宽度和高度,在VideoView中,有一个初始设置,但是最终还是要跟内部的视频一致第二个点,不建议存放过大的资源视频视频文件demo的功能除了播放视频文件之外,还有继续播放的功能布局代码

Android Studio 用 VideoView 控件播放本地视频

Android Studio 用 VideoView 控件播放本地视频

阅读:795  点赞:0   留言:0


记录一下,Android Studio通过使用VideoView控件播放本地的视频工鞥呢


注意两点,是一个是视频的宽度和高度,在VideoView中,有一个初始设置,但是最终还是要跟内部的视频一致

第二个点,不建议存放过大的资源视频视频文件


demo的功能除了播放视频文件之外,还有继续播放的功能

布局代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="25dp"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:text="【DEMO视频播放】"
                android:textSize="20sp" />
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="25dp"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:text="【H264】"
                android:textSize="20sp" />
            <VideoView
                android:id="@+id/mdeia_video_player__videoView264"
                android:layout_width="match_parent"
                android:layout_height="600dp" />
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="50dp"
                android:orientation="horizontal">

                <Button
                    android:id="@+id/mdeia_video_player__btn_DEMO1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="5dp"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1"
                    android:text="DEMO1" />

                <Button
                    android:id="@+id/mdeia_video_player__btn_DEMO2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="5dp"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1"
                    android:text="DEMO2" />

                <Button
                    android:id="@+id/mdeia_video_player__btn_DEMO3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="5dp"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1"
                    android:text="DEMO3" />

                <Button
                    android:id="@+id/mdeia_video_player__btn_DEMO4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="5dp"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1"
                    android:text="DEMO4" />

                <Button
                    android:id="@+id/mdeia_video_player__btn_DEMO5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="5dp"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1"
                    android:text="DEMO5" />

            </LinearLayout>

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginStart="25dp"
                android:textSize="20dp"
                android:text="dsaf" />
        </LinearLayout>
    </ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>


java

package com.example.aeke.Media;

import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;

import com.example.aeke.Device.Com.SerialPort;
import com.example.aeke.Device.MainMenu;
import com.example.aeke.R;

import androidx.appcompat.app.AppCompatActivity;

public class Video_Player extends AppCompatActivity {

    VideoView videoView264;

    MediaController MediaController264;

    Button btn_DEMO1;
    Button btn_DEMO2;
    Button btn_DEMO3;
    Button btn_DEMO4;
    Button btn_DEMO5;

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

        btn_DEMO1 = (Button)findViewById(R.id.mdeia_video_player__btn_DEMO1);
        btn_DEMO2 = (Button)findViewById(R.id.mdeia_video_player__btn_DEMO2);
        btn_DEMO3 = (Button)findViewById(R.id.mdeia_video_player__btn_DEMO3);
        btn_DEMO4 = (Button)findViewById(R.id.mdeia_video_player__btn_DEMO4);
        btn_DEMO5 = (Button)findViewById(R.id.mdeia_video_player__btn_DEMO5);

        Init_btn();
    }


    public  void Init_btn()
    {
        btn_DEMO1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                PlayDEMO(1);
            }
        });
        btn_DEMO2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                PlayDEMO(2);
            }
        });
        btn_DEMO3.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                PlayDEMO(3);
            }
        });
        btn_DEMO4.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                PlayDEMO(4);
            }
        });
        btn_DEMO5.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                PlayDEMO(5);
            }
        });
    }


    public  void PlayDEMO(int i)
    {
        videoView264= (VideoView) findViewById(R.id.mdeia_video_player__videoView264);


        String file= Environment.getExternalStorageDirectory().getPath()+ "/raw/h264.mp4";//oppo.3gp视频播放的名字
        String uri = "android.resource://" + getPackageName() + "/" + R.raw.demo_1;
        switch (i)
        {
            case 1:
                uri = "android.resource://" + getPackageName() + "/" + R.raw.demo_1;
                break;
            case 2:
                uri = "android.resource://" + getPackageName() + "/" + R.raw.demo_2;
                break;
            case 3:
                uri = "android.resource://" + getPackageName() + "/" + R.raw.demo_3;
                break;
            case 4:
                uri = "android.resource://" + getPackageName() + "/" + R.raw.demo_4;
                break;
            case 5:
                uri = "android.resource://" + getPackageName() + "/" + R.raw.demo_5;
                break;
        }


        //String uri = "android.resource://" + getPackageName() + "/" +file;

        videoView264.setVideoURI(Uri.parse(uri));

        //MediaController mc = new MediaController(this);



        MediaController264= new MediaController(this);
        MediaController264.setAnchorView(videoView264);//设置控制器 控制的是那一个videoview
        videoView264.setMediaController(MediaController264);//设置videoview的控制器为MediaController

        videoView264.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
        {
            @Override
            public void onCompletion(MediaPlayer mp)
            {
                switch (i)
                {
                    case 1:
                    case 4:
                    case 2:
                    case 3:
                        ShowToast("下一首");
                        PlayDEMO(i+1);
                        break;
                    case 5:
                        ShowToast("播放完毕");
                        break;
                }
                //播放结束后的动作
            }
        });

        videoView264.start();
    }

    /**
     * 提示输出
     */
    public void ShowToast(String Message) {
        Toast.makeText(this,Message,  Toast.LENGTH_LONG).show();
    }
}

编写于:2022/12/16 16:19:29
发布 IP 属地:

版权声明

本站内容均来自网络转载或网友提供,如有侵权请及时联系我们删除!本站不承担任何争议和法律责任!


艾金森

每一个童年的梦想都值得用青春去捍卫!




用户地图 心情地图 日记地图 笔记地图 时间轴地图 投票地图 习题地图 十六一计划一个梦,很多事Day 3记又一次游完泳去逛端阳花市关于毕业后去哪儿我不爱自由#淹水的屋子治百病恐惧对我们的影响过大了降不下来的血糖求求你别想心选姐了3月20日记假期准备干的一些事情简赤jc 的日记 2024/06/29 13:12:59100日中考有感key4127 的日记 2024/06/04 23:50:03夏谢秋 的日记 2024/06/05 22:55:142024年3月21日 星期四 晴 计划不断调整,各种因缘汇聚初中她的婚礼教师节学校分配的任务罢了2024-07-13 Web开发记录【短信内部接口API集成】夏谢秋 的日记 2024/04/20 22:33:572024-05-28 Web开发记录【Bug修复 】强化目录功能放手000006-剔除恶习(5)复盘day22024-3-31旅游2天感受24暑假见面铁蛋儿 的日记 2024/03/16 22:19:16000009-无悔100-2简赤jc 的日记 2024/07/18 22:50:192024-08-02 Web开发记录【心情图片配图显示调整】【已解决】干一行厌一行夏谢秋 的日记 2024/06/06 21:04:45圈子06/06/2024不工作对低欲望的人来说真的太爽了直面恐惧夏谢秋 的日记 2024/05/31 21:29:402024年5月26日的第一篇日记龙升虎自闲 的日记 2024/08/17 15:34:092024年6月30日1:26am夏谢秋 的日记 2024/04/17 23:14:09忘掉自己是谁,成为别人需要的人。头破血流二楼有分两种。2024.4.10 论文准备投稿3月16日记有所感悟夏谢秋 的日记 2024/07/01 22:26:13及时止损就是赚对吧。对吧。虽然是小说,但有时候也要讲逻辑啊!我不怕死亡。只害怕遗忘。瑞芯微第二代8nm高性能AIOT平台 RK3576处理器 简介哲理24.7.20-8.6仿香试香无主题。【Datasheet】CH342K USB转双串口芯片爱别太迟。不想学外语的思考29/3/2024 和妈妈手机里大吵了一架仙人掌一号 的笔记 2024/07/09 10:50:44引子家用服务器被迫推移,新款服务器选择困难为无知道歉,却又羡慕年少。文章练习52024年6月19日契机。周处除三害洗牙多久一次适宜截止于20240901 我对人工智能 AI 的看法【Datasheet】QMI8658A 六轴陀螺仪芯片练习1【用户意见】2024-03-24 【Bug的修复】【Datasheet】FE2.1 USB 2.0高速7端口集线器控制器视频编解码协议 MPEG-4 和 H.264之间的区别【Datasheet】SiC461, SiC462, SiC463, SiC464 DC-DC电源芯片标题怎么起。【Datasheet】FD6288T 三个独立的半桥栅极驱动集成电路芯片怎么才算是爽文啊,反正我看的这本不是好吧记清明出行。html input 上传图片的方法20240512【Datasheet】SCT2A10STER DC-DC电源芯片20240728文章练习3jedahdohma 的笔记 2024/09/06 10:46:40你想活出怎样的人生。【2024年】个人家用电脑配置,NAS小服务器20240426如果你是别人,你也会讨厌我的关于我的房间视频编解码协议 【MPEG-4】【H.264】【H.265】【VP9】【AV1】【AVS】【VP8】春天吗。我爱我的国。我爱我的家。jedahdohma 的笔记 2024/08/16 10:01:41Better Man把脑子重新捡起来。jedahdohma 的笔记 2024/05/17 15:38:42JS 多级函数,类似class类的写法