【全】Android官网MediaPlayer章节翻译与总结(上)

AI原生编程:算力主权争夺下的工程化落地指南 AI原生编程并非代码补全的简单升级,而是指大模型深度理解、生成、验证与部署工业级代码的能力,其核心在于将AI从‘能写’推进到‘敢用、合规用、规模化用’。技术原理上依赖高质量代码语料、可验证执行环境(如WebAssembly沙箱)和动态算力调度中间件;技术价值体现在重构4100亿元垂直行业定制开发市场的成本结构,显著压缩金融、能源等关键领域上线周期与外包支出;典型应用场景覆盖银行风控规则引擎迭代、电力SCADA系统谐波计算、汽车ADAS功能安全C代码生成等。MiniMax科创板上市、六大厂差异化卡位及实测中的 阅读详情

1.    MediaPlayer一旦被创建(通过构造方法或者reset()方法),就进入空闲状态;当调用realease()后就进入结束状态。

*通过构造方法和reset()方法创建MediaPlayer有一个细微但很关键的区别。通过构造方法创建,如果在调用setDataSource()之前就调用了其他的改变状态的函数,运行时将会错误;通过reset()方法创建,这个错误将会被OnErrorListener.onError()方法捕获,且MediaPlayer会转换到Error状态

*MediaPlayer不再被使用时,请立即调用release()方法,释放内存,否则会造成程序异常

*MediaPlayer进入End状态后,将不能再被使用

*通过new 创建的MediaPlayer对象进入的是idle状态,通过create创建的进入的是prepared状态(自动执行了setDataSource()以及prepare())

2.读取音视频可能的错误:格式不对,分辨率太高,流读取超时等

*就算应用没有监听OnErrorListener,当出现上述错误时,MediaPlayer最终还是会进入Error状态

*如果出错了,可以在onErrorListener中调用reset()方法并在ui中进行错误提示

3.状态的转换有严格的顺序,如下图,如果没有按照这个顺序将会报IllegalStateException()


*调用setDataSource()方法时,需要处理异常IllegalArgumentException以及IOException

4.可以通过两种方法让MediaPlayer进入Prepared状态,一种是prepare()方法(同步的),一种是prepareAsync()方法(异步的,在另一个线程中),当prepare()方法return时或者当parepareAsync()执行完毕时,都会进入OnPreaparedListener.onPrepared()方法(如果你设置了该监听的话)

       preparing是调用prepareAsync()时的一个临时的状态

       在prepared状态中,音视频声音的大小、播放时屏幕的大小等属性都可以通过一定的方法更改

5.isPlaying可以用来测试MediaPlayer是否在started状态

       处于started状态时,可以调用——

OnBufferingUpdateListener.onBufferingUpdate()来跟踪流读取音视频的缓冲数据

       如果MediaPlayer已经处于started状态,再调用start()没有影响

6.paused状态与started状态可以相互转换,并且这个转换是异步的,且需要耗费几秒的时间

       如果MediaPlayer已经处于paused状态,再调用pause()没有影响

7.stopped状态可以从started、paused、prepared、playbackCompleted状态转换过来

       一旦MediaPlayer转换到了stopped状态,只有通过prepare()以及prepareAsync()让MediaPlayer进入prepared状态

       如果MediaPlayer已经处于stopped状态,再调用stop()没有影响

8. 调用seekTo()方法可以调整播放的位置

       seekTo(int)方法是异步执行的,所以它可以马上返回,但是实际的定位播放操作可能需要一段时间才能完成,尤其是播放流形式的音频/视频。当实际的定位播放操作完成之后,内部的播放引擎会调用客户端程序员提供的OnSeekComplete.onSeekComplete()回调方法。可以通过setOnSeekCompleteListener(OnSeekCompleteListener)方法注册。

注意,seekTo(int)方法也可以在其它状态下调用,比如Prepared,Paused和PlaybackCompleted状态。此外,目前的播放位置,实际可以调用getCurrentPosition()方法得到,它可以帮助如音乐播放器的应用程序不断更新播放进度

9. 当播放到流的末尾,播放就完成了。

如果调用了setLooping(boolean)方法开启了循环模式,那么这个MediaPlayer对象会重新进入Started状态。

若没有开启循环模式,那么内部的播放引擎会调用客户端程序员提供的OnCompletion.onCompletion()回调方法。可以通过调用MediaPlayer.setOnCompletionListener(OnCompletionListener)方法来设置。内部的播放引擎一旦调用了OnCompletion.onCompletion()回调方法,说明这个MediaPlayer对象进入了PlaybackCompleted状态。

当处于PlaybackCompleted状态的时候,可以再调用start()方法来让这个MediaPlayer对象再进入Started状态。

 

Trojan/Android.GDownload.jw[exp,gen] 病毒报警解决方案 去年12月份开始,我的个人app记忆空间就被华为应用市场报病毒了,而且非常突然,之前都是好好的,突然报毒打得我猝不及防。 华为市场提供的信息如下: 你好,你的应用审核复测 应用经手机管家检测为风险软件,存在中等风险;无法上架; 是不是很坑,在使用华为手机进行验证才得知是病毒Trojan/Android.GDownload.jw[exp,gen], 看得我一脸懵逼,因为对病毒处理这块没有太多的... 阅读详情

相关推荐

电子工程师必看:dB与放大倍数快速换算表(附常见误区解析)

本文为电子工程师提供了dB与放大倍数快速换算的实战指南。文章深度解析了分贝的本质与核心价值,并提供了电压/电流与功率增益的速查表及心算技巧。重点剖析了混淆电压与功率dB、-3dB带宽理解等常见误区,并结合示波器、频谱仪测量及系统级应用,帮助工程师在实际工作中高效、准确地运用这一对数工具。

weixin_29214199的博客 655

Android MediaPlayer API 大全

Android MediaPlayer API 大全1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态。当调用了release()方法后,它就处于End状态。这两种状态之间是MediaPlayer对象的生命周期。1.1) 在一个新构建的MediaPlayer对象和一个调用了reset()方法的MediaPlayer对象之间有一个微小的但是

5917

手机抽奖页面代码html,html5大转盘抽奖支持手机转盘抽奖代码

特效描述:html5 大转盘抽奖 支持手机 转盘抽奖代码。html5转盘,html5抽奖,手机转盘,手机抽奖,手机转盘抽奖,可配置奖品抽奖。代码结构1. 引入CSS2. 引入JS3. HTML代码大转盘活动var turnplate={restaraunts:[],//大转盘奖品名称colors:[],//大转盘奖品区块对应背景颜色outsideRadius:192,//大转盘外圆的半径textR...

weixin_39628551的博客 1867

android学习笔记----来看看MediaPlayer释放资源release()的使用

当查阅 MediaPlayer 文档时 你会发现这个方法setOnCompletionListener,这里的说明指出该方法允许你注册一个回调。当媒体资源或音频文件到达结束位置时会回调该方法,注意该方法的输入是OnCompletionListener 部分代码如下: public class NumbersActivity extends AppCo...

aodubi0638的博客 1898

封装CTP API为Java SDK

本文介绍了在Windows环境下使用Java调用CTP API的编译实现过程。首先需要准备CTP API SDK、JDK、SWIG和Visual Studio等工具,配置好开发环境。然后通过搭建目录结构、编写SWIG接口文件ctp.i,实现C++到Java的代码转换。文中详细说明了文件目录组织方式,并提供了处理中文乱码的代码示例。通过这一系列步骤,最终将CTP的C++接口转换为Java可调用的形式,为Java项目获取期货实时报价数据提供支持。

weixin_43952815的博客 1222

【RT-DETR有效改进】手把手带你调参RT-DETR,1:1复现官方版本实验环境

本文是带大家进行调参,利用ultralytics仓库1:1复现RT-DETR官方实验环境,从而在后期发表论文 的时候省去一些不必要的麻烦,例如被审稿人提出质疑,本文的调参内容均有依据,根据RT-DETR官方Github上发布的版本进行设置本文的调参以ResNet18为例,其余的何其的调参基本一致。RT-DETR剑指论文专栏,持续复现各种顶会内容——论文收割机RT-DETR。

Snu77的博客 9928

Android安卓的mediaPlayer的release使用注意事项

mediaPlayer在当前活动使用,活动pause,destroy一定要release,否则系统资源不够 mediaPlayer2.release(); 后一定要接上 mediaPlayer2=null; 判断mediaPlayer是否release用if(mediaPlayer2!=null) MediaPlayer 会消耗宝贵的系统资源。因此,你应该经常采取额外的预防措施来确保及时把不需要...

快乐李同学的博客 4331

Python爬虫教程:抓取纽约时报文章存档

爬虫技术主要用于从网站上抓取并提取数据。HTTP请求:使用requests库发送HTTP请求以获取网页。网页解析:使用或lxml库解析HTML网页。数据存储:将抓取的数据保存为CSV、JSON等格式,或者存储在数据库中。防反爬虫技术:模拟正常的用户请求,避免被反爬虫机制封锁。多线程与异步爬取:提高抓取效率。通过这篇博客,您已经学习了如何使用Python爬取纽约时报的历史文章存档。本文介绍了如何模拟请求头、抓取网页内容、解析HTML并提取数据,最后存储到CSV文件或数据库中。

2201_76125261的博客 593

android的mediaplayer在release后一定需要=null

Apparently the documentation for the Android MediaPlayer is not right about no invalid state for reset(). Below's what happen when I experienced it: In my PlayerActivity.java code, I set my Media

蓝松SDK 1万+

华为交换机系统软件升级和安全漏洞修复教程

在华为交换机国网可以查询到华为交换机官方电话:400-822-9999,通过下命令查询出需要升级的交换机软件版本和补丁版本号发给华为,获取新的升级系统软件和补丁以及升级教程。下面是我升级华为交换机总结的教程,作为参考。...

星如雨落 2965

[QMT量化交易小白入门]-二十八、有了回测年化收益好的策略,如何在QMT量化实盘呢(附python代码解析)

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 2925

【全】Android官网MediaPlayer章节翻译与总结(下)

1.复制自己翻译的内容 Android的多媒体框架包括支持播放多种常见的媒体类型,使您可以轻松地把音频、视频和图像集成到你的应用。你可以播放音频或视频媒体文件,这些文件是存储在你的应用程序的资源文件中的。应用程序的资源文件可以是文件系统中独立的文件,或通过网络连接获取的一个数据流,所有使用MediaPlayer APIS的资源文件。 1. 注意:如果你通过一个URL来获取一个

Remember2的专栏 1830

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【android】【转】class android.media.MediaPlayer

    MediaPlayer类可用于控制音频/视频文件或流的播放。关于如何使用这个类的方法还可以阅读VideoView类的文档。 1.状态图     对播放音频/视频文件和流的控制是通过一个状态机来管理的。下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态。椭圆代表MediaPlayer对象可能驻留的状态。弧线表示驱动MediaPlayer在各个...

weixin_33889665的博客 350

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【翻译】安卓新播放器EXOplayer介绍

http://developer.android.com/guide/topics/media/exoplayer.html 前言: Playing videos and music is a popular activity on Android devices. The Android framework providesMediaPlayeras a quick solution...

weixin_30387799的博客 392

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android爬取英文单词发音,并在app中播放。(使用百度接口)

前言 最近在做翻译软件,发现百度翻译的单词发音获取比较简单。 network分析 从百度翻译官网中可以发现,向https://fanyi.baidu.com/gettts可以获取MP3音频文件 http请求 请求URL:https://fanyi.baidu.com/gettts 请求方式Get 请求参数: lan: uk text: petroleum spd: 3 source: web ...

Crayonxin2000的博客 2283

android 打包签名时出现Conversion to Dalvik format failed with error 1

android项目用eclipse-->export打包成签名apk出现了此错误 虽然出现了错误但还是在目标文件夹中生成了apk 原以为这个错误可以忽略(无论如何还是生成了apk...  o(╯□╰)o) 但发现此apk的内容是我代码没有更改前的样子 奇怪... 于是下决心解决此问题 先上我最后的解决方案: 问题的缘由就在于第三方库工程的引入,修改前Java Build Pa

Remember2的专栏 1万+

关于在ScrollView中嵌套ListView,ListView显示不全的问题

如题,解决方案有三种: 1. 自定义ListView,重载onMeasure()方法,设置全部显示(推荐,最简便快捷) package cn.llzg.widget; import android.widget.ListView; public class ScrollViewWithListView extends ListView { public ScrollViewWithLi

Remember2的专栏 3683

新手守则——Android手机通过USB连接电脑无法连接到Eclipse的情况

在日常的程序编码过程中,经常会出现手机连不上eclipse的情况 百度之,网上说来说去的方法无非是关掉豌豆荚、应用宝、360手机卫士等手机管理软件、重启Eclipse等,但有时候照着做仍然连不上,无奈者甚至只得重启电脑,开发时间大大增加,并且影响编码的心情(要知道写程序时心情很重要!!!) 以上解决方法都只说其表面原因,如隔靴搔痒、未至深处。 先上终极版解决方案,再说原因。 1、查看adb

Remember2的专栏 2403

关于android AChartEngine jar包引入错误

本人菜鸟一枚,但是有志向大拿发展,所谓积少成多,水滴石穿 决心今日起,将所做项目遇到一些棘手的问题积累下来,成就大拿之路。 废话不多说,入正题: 这次碰到的问题如下: 公司要做基于安卓的报表折线图,在网上搜到可以用开源插件AChartEngine (还有其他的,但我对图形界面的要求不高再加上AChartEngine的介绍资源最多,故敲定用这个插件) 插件简单介绍:对于基本的报表图形如饼

Remember2的专栏 1546

新手守则——关于Android屏幕适配

新手在画页面时,常常会出现一个烦恼,页面在不同屏幕大小的手机上  变形了,要么被拉升要么挤到了一块,要么字的大小超出了btn范围。即使采用了所谓的自适应屏幕的dp、sp单位、但仍然无法完美的适配多个屏幕。 下面就来谈谈如何做到屏幕适配 1.ViewGroup类(LinearLayout、RelativeLayout等)善用layout_weight、动态设置宽高 2.ImageView类,9Patch图、 IconFont(IconMoon)

Remember2的专栏 1029

个人日记——用来激励自己

决心接下来的一年要好好写一写技术博客,整理以前的文章,并把过去的经验总结 写下这篇日志以表决心,现在确定的几个要写的方面有: 1.关于屏幕适配性 2.图片处理 3.自定义view——引用的例子:轮播图 4.网络处理机制 5.不通过百度地图等第三方jar包如何获得当前位置 6.一步步搭建自己的android基础框架

Remember2的专栏 792

欢迎使用优快云-markdown编辑器

AndroidStudio NDK 开发(一)环境搭建 先写个目录,记下自己想写的 1.Android Studio 废弃的搭建方法(简单) 2.讲解 Android Studio 构建NDK项目时帮我们做了什么,引出Android4.0 NDK编程这本书 3.尝试新的 搭建方法 4.学习一个PDF阅读的开源组件、甚至简单的运用到了NDK的游戏app

Remember2的专栏 601
上一篇: Android通过HttpURLConnection与HttpClient联网代理网关设置
下一篇: 【全】Android官网MediaPlayer章节翻译与总结(下)
Remember2
博客等级 码龄15年 4粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值