1.状态图及生命周期

MediaPlayer是一个多媒体播放类,通过它控制音视频流或本地音视频资源的播放过程。

它分为很多状态,如下图所示:

图中的单箭头弧代表同步函数调用,双箭头弧代表异步函数调用。

1.1 Idle状态、End状态以及生命周期

 Idle就绪态:MediaPlayer创建实例或调用reset函数后,播放器被创建所处的状态。

End结束态:调用release函数后,编程End状态。

生命周期:Idle就绪态到End结束态的整个过程。

1.2 Error状态

Error状态:触发回调机制,调用程序出错时,根据回调函数将状态触发到Error状态,一旦不适用MediaPlayer,就需要调用release函数,以便释放。

为了重新使用MediaPlayer,调用reset函数,会恢复到Idle状态,所以要设置错误监听,可从播放器内部返回的信息找到错误原因。

1.3 Initialized状态

Initialized状态:初始化状态,当调用setDataSource函数时,将Idle状态变为Initialized状态。若在非Idle状态调用会抛异常,当重载时也需要抛出2个异常。

1.4 Prepared状态

Prepare状态:分为2种方式。同步方式--本地音视频文件。异步方式--网络数据,需要缓冲数据。

1.5 Started状态

Started状态:在播放控制开始之前,必须调用start函数并成功返回,状态由Prepared变为Started状态。当处于Started状态时,若事先注册过setOnBufferingUpdateListener,内部会回调,主要保持跟踪音视频流的buffering status。

1.6 Paused状态

Paused状态:为暂停状态,调用MediaPlayer.pause函数时,状态由started变为Paused状态。这个状态是瞬间的。

1.7 Stopped状态

Stopped状态:调用stop函数时,都将进入Stopped状态,无论处于何种状态。一旦Stopped,playback不能开始,直到重新调用prepare或prepareAsync函数,且处于Prepared状态才开始。

1.8 PlaybackCompleted状态

PlaybackCompleted状态:当前播放的位置可通过getCurrentPosition函数获取,setLooping为true,表示循环播放。依然处于started状态。

今天就先了解这些基本的音视频开发的流程。接下来的会进行代码编写学习分析,更加深入的理解整个过程。我们下个博客见。

Android音视频开发(2)常用的系统播放器MediaPlayer相关推荐

  1. Android音视频开发之音频录制和播放

    Android音视频开发之音频录制和播放 1.封装音频录制工具类: public class RecorderAudioManagerUtils {private static volatile Re ...

  2. Android 音视频开发学习思路

    Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...

  3. Android音视频开发基础(七):视频采集-系统API基础

    前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了<Android 音视频从入门到提高 - 任务列表>.本文是Android音视 ...

  4. Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频

    前言,音视频这块,确实比较难入门,本着学习的态度,我这边也跟着 Android 音视频开发入门指南 打怪升级,留下个脚印,大家共勉. 音视频 系列文章 Android 音视频开发(一) – 使用Aud ...

  5. Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件(学习笔记)

    关于 AudioRecord Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风 ...

  6. 直播平台源码搭建教程之Android音视频开发

    直播平台源码搭建教程之Android音视频开发 音频 将声音保存成音频的过程,其实就是将模拟音频数字化的过程,为了实现这个过程,就需要对模拟音频进行采样.量化和编码.接下来我们详细讲解这一过程. 采样 ...

  7. Android 音视频开发(三) -- Camera2 实现预览、拍照功能

    音视频 系列文章 Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音):AudioTrack播放音频 Android 音视频开发(二) – Camera1 实现预览.拍 ...

  8. 23最新《Android音视频开发进阶指南》,音视频开发者速领

    作为Android开发程序员,我们时刻站在互联网的前端,而音视频作为现在乃至未来几年一个强劲的风口,吸引了许多程序员的关注. 那么音视频开发的行业现状究竟如何呢?我们又该怎样入门呢?请看下文: 音视频 ...

  9. 那些年,Android音视频开发那些事儿

    音视频开发的主要应用有哪些? 音频播放器,录音机,语音电话,音视频监控应用,音视频直播应用,音频编辑/处理软件,蓝牙耳机/音箱,等等 1.视频监控类 (JNI+应用层开发) 从硬件到嵌入式再到软件,涉 ...

最新文章

  1. Linux shell日常使用
  2. Bootstrap验证控件的使用
  3. 自动编译和提交脚本(结合svn和visual studio)
  4. linux环境cpp/c文件的makefile编写(caffe举例)
  5. mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用
  6. lucene学习笔记_学习Lucene
  7. C# 委托与事件总结
  8. python数据归一化代码_Python 数据归一化/标准化
  9. 如何复制对冲基金的成功?
  10. c 易语言dll 循环,易语言的Dll命令及程序集知识点
  11. 基于Bilibili热门视频Top100弹幕的数据爬取与分析(报告版)
  12. 【uni-app】uni-app基础知识
  13. 商城客服功能-------环信即时通讯
  14. VOC数据集制作 滑窗切分图片 单通道标签调色板
  15. 用Java实现ATM机功能(附带源码)
  16. 音视频学习之ffmpeg时间戳相关整理(时间基tbr,tbn,tbc)
  17. 计算机打印时颜色怎么加深,喷墨打印机部分颜色加深怎么办
  18. 还原精灵的另类卸载方法
  19. project 2003
  20. 深圳市半导体行业协会会长周生明率队赴加速科技调研

热门文章

  1. python多进程运行MIC(最大信息系数)
  2. 使用py2neo指定neo4j具体的数据库
  3. python log模块_Python日志模块-logging
  4. linux android studio 快捷方式,Android studio中的代码格式化快捷方式
  5. python计算夏令时的具体日期,python time.time()和“夏令时”;
  6. HTML5商城开发四 多图或多商品的水平滚动展示
  7. 使用Java处理大文件
  8. java 蓝桥杯算法训练 s01串(题解)
  9. 云原生和ServiceMesh主要组件--理解K8s/Istio/Envoy
  10. SkyEye图形化界面使用技巧篇(二)