Android MediaPlayer

news2024/11/24 21:01:54
        MediaPlayer 类是媒体框架最重要的组成部分之一。此类的对象能够获取、解码以及播放音频和视频,而且只需极少量设置。它支持多种不同的媒体源,例如:
本地资源
内部 URI,例如您可能从内容解析器那获取的 URI
• 外部网址(流式传输)
MediaPlayer简单使用
1.实例化MediaPlayer类
2.设置数据源   
如果使用 MediaPlayer 流式传输基于网络的内容,则必须请求网络访问权限
3.开始播放
        在调用start()方法之前,程序会调用prepare()方法或prepareAsync()方法解析,prepare()为同步操作,一般用于解析较小的文件,prepareAsync()为异步操作,一般用于解析较大的文件。
        使用create()方法创建 MediaPlayer对象不需要调用prepare()方法,直接调用start()方法。
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); 

4.停止播放
调用stop()方法停止播放,之后调用release()方法将MediaPlayer对象占用资源释放。

 public void onClick(View view) {
        CharSequence text = btn_opt.getText();
        if (TextUtils.equals(text,"开始")){
            btn_opt.setText("结束");
            mediaPlayer = new MediaPlayer();
            //设置准备监听   准备完成回调onPrepared方法
            mediaPlayer.setOnPreparedListener(this);
            //设置完成监听
            mediaPlayer.setOnCompletionListener(this);
            try {
                //指定视频源
                mediaPlayer.setDataSource(new File(getExternalFilesDir(""),"b.mp4").getAbsolutePath());
            } catch (IOException e) {
                e.printStackTrace();
            }
            mediaPlayer.setSurface(new Surface(textureView.getSurfaceTexture()));//设置可视化窗口
            mediaPlayer.prepareAsync();//异步准备
        }else {
            btn_opt.setText("开始");
            mediaPlayer.stop();
            mediaPlayer.release();
        }
    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        mediaPlayer.start();
    }

    @Override
    public void onCompletion(MediaPlayer mp) {
        btn_opt.setText("开始");
        mediaPlayer.release();
    }
MediaPlayer状态图
MediaPlayer详细请参考
MediaPlayer 概览  |  Android media  |  Android Developers (gonglchuangl.net)
MediaPlayer  |  Android Developers (gonglchuangl.net)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1557840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea从零开发Android 安卓 (超详细)

首先把所有的要准备的说明一下 idea 2023.1 什么版本也都可以操作都是差不多的 gradle 8.7 什么版本也都可以操作都是差不多的 Android SDK 34KPI 下载地址: AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 …

智慧水利中数据可视化的关键作用

在当今这个数据驱动的时代,数据可视化已成为转化复杂数据集为易于理解的视觉格式的关键技术,它在智慧水利领域的应用尤为显著。智慧水利利用现代信息技术,整合水资源管理的各个方面,旨在提高水资源的使用效率和管理效能。数据可视…

Linux基础篇:VMware虚拟机3种常用的网络模式介绍

VMware虚拟机3种常用的网络模式介绍 VMware虚拟机提供了几种不同的网络连接模式,以满足不同场景下的网络需求。以下是VMware虚拟机的三种主要网络模式: 1.桥接模式(Bridged Mode)网卡名称VMnet0 桥接模式允许虚拟机直接连接到物…

Linux——将云服务器作为跳板机,frp实现内网穿透

文章目录 操作步骤1. 准备工作:2. 配置frp服务器端:3. 配置frp客户端:4. 启动frp客户端:5. 测试连接:6. 安全注意事项: 云服务器性能分析阿里云具体操作步骤1. 购买:2. 登录:3. 首次…

Transformer论文阅读

Transformer论文阅读 摘要结论1 Introduction (导言)2 Background3 Model Architecture3.1 Encoder and Decoder StacksEncoderLayer NormDecoder 3.2 Attention3.2.1 Scaled Dot-Product Attention3.2.2 Scaled Dot-Product Attention3.2.3 Application…

HAProxy + Vitess负载均衡

一、环境搭建 Vitess环境搭建: 具体vitess安装不再赘述,主要是需要启动3个vtgate(官方推荐vtgate和vtablet数量一致) 操作: 在vitess/examples/common/scripts目录中,修改vtgate-up.sh文件,…

嵌入式Qt 布局管理器QBoxLayout

一.存在问题 二.布局管理器 三.布局接口函数的使用 TestBtn1.setText("Test Button 1"); TestBtn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); TestBtn1.setMinimumSize(160, 30); 使用setSizePolicy,那么 TestBtn1按钮 就会随着…

TypseScript再学习之类型别名和接口(10)

先看类型别名:使用关键字 type 声明,注意有等于号额 // 类型别名 使用关键字 type 声明,注意有等于号额 type Cat {name: string; }; let huahua: Cat {name: "花花", };type和interface不同之处在于:interface 是可以自动合并类型的&#…

源支付V7开源版2.99,修复各种提示错误

源支付V7开源版2.99,修复各种提示错误 加密说明:200拿来的,只有8.1这个文件加密,其他文件无任何加密,已修复各种提示错误 测试其他开源版安装提示错误,有几个文件是加密的 注:开发不易&#…

基于stm32的h5新建工程

目录 基于stm32的h5新建工程前言实验目的原理图部分搭建工程引脚配置界面:时钟配置界面工程选项卡: 编写代码实现点灯本文中使用的测试工程 基于stm32的h5新建工程 本文目标:基于stm32的基础实验 按照本文的描述,应该可以跑通实…

python学习16:python中的布尔类型和条件语句的学习

python中的布尔类型和条件语句的学习 1.布尔(bool)类型的定义: 布尔类型的字面量:True表示真(是、肯定) False表示假(否、否定) True本质上是一个数字记作1,False记作0 …

码支付个人支付宝永不掉线使用教程

​支付宝免CK添加操作稍微繁琐点,请耐心观看 此通道必须关闭你的余额宝自动转入功能,否则可能造成不跳转 支付宝添加的所有通道均支持H5免输入收款 第一步:打开支付宝开发平台,然后用你的支付宝注册登陆:https://op…

Node.js的Event Loop:六个阶段详解

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Ypay源支付码支付最新PC三合一监控软件实测有效

Ypay源支付码支付最新PC三合一监控软件实测有效 【免费授权】源支付正版授权_ 打造更专业的免签支付系统

深入理解HDFS工作原理:大数据存储和容错性机制解析

** 引言: ** 在当今数据爆炸的时代,存储和管理大规模数据成为了许多组织面临的重要挑战。为了解决这一挑战,分布式文件系统应运而生。Hadoop分布式文件系统(HDFS)作为Apache Hadoop生态系统的核心组件之一&#xff…

C语言-写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

0xaaaaaaaa...等是什么&#xff1f;-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/137179252 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define SWAP(num) (((num & 0xAAAAAAAA) >> 1) | ((num & 0x55555555) << …

本地虚拟机服务器修改站点根目录并使用域名访问的简单示例

说明&#xff1a;本文提及效果是使用vmware虚拟机&#xff0c;镜像文件是Rocky8.6 一、配置文件路径 1. /etc/httpd/conf/httpd.conf #主配置文件 2. /etc/httpd/conf.d/*.conf #调用配置文件 调用配置文件的使用&#xff1a; vim /etc/httpd/conf.d/webpage.conf 因为在主配…

拌合楼管理软件开发(十三) 对接耀华XK3190-A9地磅(实战篇)

前言: 实战开整 目前而言对于整个拌合楼管理软件开发,因为公司对这个项目还处于讨论中,包括个人对其中的商业逻辑也存在一些质疑,都是在做一些技术上的储备.很早就写好了串口与地磅对接获取代码,也大概知道真个逻辑,这次刚好跟库区沟通,远程连接到磅房电脑,开始实操一下. 一、地…

mybatis的基于注解和xml的两种实现方式详解

文章简介 本文介绍了springbootmybatis实现数据库操作的两种实现方式&#xff0c;经测试均可运行使用。整体而言注解更加简便&#xff0c;但面对一些复杂查询&#xff0c;可能需要使用到注解方式。 注解方式 pom依赖&#xff1a; <dependencies><!--连接数据库--&…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有&#xff1a; 基于BitVM的乐观 BTC bridgeBitVM&#xff1a;Bitcoin的链下合约Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f; 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例&#xff0c;以引入基于 1-of-n 诚实假设的多方配置。这…