Android MediaPlayer详解视屏播放之SurfaceView(四)

Android中使用surfaceview+MediaPlayer播放视频 android中播放视频主要有两种方式: 使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型 使用android自带的VideoView,这种方法太简单就不介绍了 使用SurfaceView+MediaPlayer,这种方式效果比较好,这里也重点介绍 SurfaceView从android 1.0就有了,十分好用。一般来说,UI对刷新都需要在UI 阅读详情
Android MediaPlayer详解视屏播放之SurfaceView(四)
效果图



MediaPlayer 视屏播放之SurfaceView
1.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.cxy.mediaplayer.MainActivity">

    <SurfaceView
        android:id="@+id/sfv_show"
        android:layout_width="match_parent"
        android:layout_height="300dp"/>

    <Button
        android:id="@+id/btn_start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始"/>

    <Button
        android:id="@+id/btn_pause"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="暂停 "/>

    <Button
        android:id="@+id/btn_stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="终止"/>

</LinearLayout>
2.主类MainActivity
package com.example.cxy.mediaplayer;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener, SurfaceHolder.Callback {
    private MediaPlayer mPlayer = null;
    private SurfaceView sfv_show;
    private SurfaceHolder surfaceHolder;
    private Button btn_start;
    private Button btn_pause;
    private Button btn_stop;

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

    private void initView() {
        sfv_show = (SurfaceView) findViewById(R.id.sfv_show);
        btn_start = (Button) findViewById(R.id.btn_start);
        btn_pause = (Button) findViewById(R.id.btn_pause);
        btn_stop = (Button) findViewById(R.id.btn_stop);
        btn_start.setOnClickListener(this);
        btn_pause.setOnClickListener(this);
        btn_stop.setOnClickListener(this);
        //初始化SurfaceHolder类,SurfaceView的控制器
        surfaceHolder = sfv_show.getHolder();
        surfaceHolder.addCallback(this);
        //显示的分辨率,不设置为视频默认
        surfaceHolder.setFixedSize(320, 220);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_start:
                mPlayer.start();
                break;
            case R.id.btn_pause:
                mPlayer.pause();
                break;
            case R.id.btn_stop:
                mPlayer.stop();
                break;
        }
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        mPlayer = MediaPlayer.create(MainActivity.this, R.raw.oppo);
        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        //设置显示视频显示在SurfaceView上
        mPlayer.setDisplay(surfaceHolder);
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mPlayer.isPlaying()) {
            mPlayer.stop();
        }
        mPlayer.release();
    }
}
视屏播放_使用原生MediaPlayer+TextureView实现全屏、小窗口、视频列表、m3u8监控播放 Android 视屏播放器————MediaPlayer+TextureView实现全屏、小窗口、视频列表播放标签(空格分隔): 视屏播放器一、效果图二、集成步骤 按文件目录复制进自己项目【文件下载】 AndroidManifest.xml文件,添加权限: <uses-permission android:name="android.permission.INTERNET"/> <uses-perm 阅读详情

相关推荐

使用Android制作视频播放器

使用Android制作视屏播放器 目录使用Android制作视屏播放器前言一、展示预览二、详细步骤1.准备工作2、主界面设计3、主界面java文件总结使用Android制作视屏播放器 前言 Android小作业,含实现本地视频播放界面,实现全屏播放视频界面,两个界面所采用的的控件不同,可进行比较学习,作为大作业参考代码。 一、展示预览 第一界面:主要使用VideoView、button、mediaConrtroller类 第二界面:SurfaceView控件和MediaPlayer共同放视频 二、详细步骤

weixin_53937982的博客 8137

Android两个Surface重叠显示

项目需求,相机预览做背景surfaceView1,播放其VideoView在其上,即:1个surfaceview获取相机预览数据作为背景(CustomCameraView),1个surfaceview在前一surfaceview之上作为绘图层(GamePanelView)。 布局使用framelayout,大小一致。由于surfaceview本身为透明的,本人认为直接层叠2个surfaceview

iblade的博客 7211

SurfaceView+MediaPlayer视频播放以及小窗口和全屏播放

SurfaceView+MediaPlayer视频播放,包含小窗口和全屏播放

Android MediaPlayer+SurfaceView播放视频(附Demo)

MediaPlayer+SurfaceView播放视频,切入后台暂停播放,切换回来继续播放。运行暂停,暂停后切入后台,再切换回来,避免了黑屏问题。

偶尔记录的一些学习笔记 2万+

MediaPlayer和SurfaceView的结合使用

主要是介绍MediaPlayer和SurfaceView的结合使用,可以多个状态的加载本地视频。

最新版IAR9.40和注册工具

IAR最新版的IDE在编译速度和代码提示等各个方面上都有很大提升,软件这个东西果然还是越新越好。之前的时候,IAR v9系列网上很多人都说能用,但是又没有把 IAR v9系列的注册方法写的很清楚,导致我一直都用注册老版本v8的方法去注册v9。结果注册后都会提示。

xue_nuo的博客 4万+

SurfaceView和MediaPlayer

SurfaceView和MediaPlayer一、效果二、代码示例 一、效果 二、代码示例 //布局xml文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http:...

weixin_43863384的博客 238

鸿蒙实战开发教程-注册登录页面

在密码输入框中,只要设置TextInput的类型就可以实现带眼睛logo的密码输入框效果:

2401_82546228的博客 3559

Android多媒体功能开发(9)——使用SurfaceView控件+MediaPlayer类播放视频

使用SurfaceView控件+MediaPlayer类播放视频的主要原理是把MediaPlayer对象的显示控件设置为SurfaceView对象。播放控制都是针对MediaPlayer对象,用法与播放音频相同。

nanoage的博客 2928

SAP 人力资源工资配置项3---工资项配置

工资项设置

xiouluoyang的专栏 1万+

国产大模型编程能力深度分析报告(2026年5月更新版)

2026年5月国产大模型编程能力报告显示,主流模型迎来重大升级。DeepSeek V4以1.6T参数创性能新高,Qwen3.6-Plus支持原生多模态编程,MiniMax M2.7转向闭源并优化Agent编码,Kimi K2.6成为商业化成熟的主力模型,GLM-5开源并涨价30%。阿里云百炼推出双轨订阅体系,区分团队和个人开发者需求。各模型在参数规模、上下文长度、性能表现和适用场景上各具优势,国产AI编程服务正加速向订阅制转型,成本效益显著提升。

Willin Wang 的全栈升级指南 1642

android surfaceView+mediaPlayer 自定义视频播放器

Android 视频播放一般分为两种: 1.使用Android自带播放器 VideoView ,其中一些功能,已经都给实现好了(此view一般不满足自己的需求,比如:界面啊,控制啊,以及可能还有手势控制音量,手势控制亮度等等,那么就会选择第二种方式) 2.surfaceView+mediaPlayer 自定义播放器(这个可以制作自己想要任何功能以及界面的播放器,当然前提得自己实现) 主要就是

duke618的博客 4734

QGIS:安装Deepness插件+应用

简单的描述了deepness的安装应用历程,重点是记录博主本次遇到的坑

fengyi157的博客 2331

android MediaPlayer SurfaceView 网络视频播放器

android MediaPlayer SurfaceView 网络视频播放器

随意而然的专栏 4149

OpenHarmony-AI调研

基于OpenHarmony-5.0.0版本以及laval社区等网络资料调研当前OH上的AI发展情况。

qqq1112345的博客 1367

Xilinx FPGA平台GTX简易使用教程(五)GTX收发测试及示例工程介绍

GTX IP配置完了,你不得搞个回环测试一番?

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

Android SurfaceView+MediaPlayer 本地视频播放器

功能情景:        1.播放视频文件        2.上一首,下一首        3.卡拉ok功能        4.播放模式(顺序,随机,循环) 效果图 功能的实现:        1.伴唱功能:(这里是mkv文件切换声道),伴唱转AUDIO,原唱转VIDEO。当然前提是先获得mkv文件的所有声道。 我在视频准备的时候获取所有声道,然后判断是否有这个声道我再转。

SpringYang 2689

基于深度学习的X光安检危险品检测系统(YOLOv8 + UI界面 + 数据集)

随着全球安全形势的变化,机场、车站、地铁等场所的安检工作日益重要。X光安检系统已经成为现代公共安全领域中不可或缺的部分,能够有效地检测物品的内部结构,识别潜在的危险品。然而,传统的X光图像分析方法仍然依赖人工操作,检测效率较低,并且易受到人为因素的影响。近年来,深度学习技术的应用在图像分析领域取得了显著的突破,特别是在目标检测任务中,YOLO(You Only Look Once)模型因其高效性和精度,成为了许多目标检测任务的首选模型。

YOLO 1059

Android用SurfaceView播放本地视屏(音频)文件

我们知道Android中可以使用VideoView播放视频,而且操作简单、方便。除此之外,我们还可以利用MediaPlayer用来播放视频,不过MediaPlayer主要用于播放音频,没有提供输出图像的输出界面,就是只能听到声音,看不到画面,这时就想到到了SurfaceView控件,将它与MediaPlayer结合起来,就能达到了视屏播放效果了,今天就做一个简单的视屏播放功能,把准备好的视屏文件t

true100的专栏 2604

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 下的一段视屏播放的逻辑

android 下的一段视屏播放的逻辑

菜鸟 1344

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

使用SurfaceView+MediaPlayer+SeekBar实现视屏播放器

使用SurfaceView+MediaPlayer+SeekBar实现视屏播放器 1.界面设计 2.实现代码 3.播放权限 1.界面设计代码块(activity_main.xml)如图: <SurfaceView android:layout_width="match_parent" android:layout_height="300dp" andr

qq_37465836的博客 558

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android笔记:视屏播放、VideoView、surfaceView,简易视频播放

一、VideoView方法1.activity_video.xml<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="m...

weixin_33953249的博客 174

SurfaceView和Mediaplayer实现播放网络和本地视频 一

SurfaceView Mediaplayer

501846585_QQAndroid_java 1万+

android获取到焦点又自动失去焦点,[Android]播放视屏,Activity失去焦点在获取焦点不能继续正常播放...

我播放视屏采用的是MediaPlayer+SurfaceView1 解决办法:在回调surfaceCreated时重新执行mPlayar.setDisplay(surfaceHolder);示例:mHolder.addCallback(new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(SurfaceHolder su...

weixin_34307867的博客 701

android 自定义MP4播放器

昨天,在网上找了好多资料,终于做了一个自定义的播发器。 视频播放方式 在Android中播放视频的方式有两种: 1、使用MediaPlayer结合SurfaceView进行播放。其中通过SurfaceView显示视频的画面,通过MediaPlayer来设置播放参数、并控制视频的播放操作。 该方式的好处是灵活性强,可随意定制。缺点是编码复杂,连开始/暂停的按钮都要自己实现。 2、使

谢岩的博客 2291

android mediaplayer SurfaceView

package com.curiousby.baoyou.cn.DemoMediaPlayer.activity; import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import...

weixin_34150224的博客 142
上一篇: Android MediaPlayer详解视屏播放之VideoView(三)
下一篇: Android RecyclerView之ListView显示(二)
Android开发-CXY
博客等级 码龄10年 33粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值